Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从一列中选择不同的值插入到表中?_Sql_Oracle - Fatal编程技术网

Sql 如何从一列中选择不同的值插入到表中?

Sql 如何从一列中选择不同的值插入到表中?,sql,oracle,Sql,Oracle,这是我正在尝试的,但我得到了这个错误 单行子查询返回多行 我有两张桌子: 表2: 我的妈妈 描述 COL_2 阶段 123 苹果 信息 P1 124 橙色 信息 P1 124 橙色 信息2 P1 125 香蕉 信息 P2 125 香蕉 信息2 P2 当您将子查询作为JOIN的结果时,为什么要使用它作为MY_NUM的子查询?这不是你想要的吗 INSERT INTO table1 (MY_NUM, COL_1, COL_2, COL_3) SELECT t2.MY_NUM, t2.COL_1

这是我正在尝试的,但我得到了这个错误

单行子查询返回多行

我有两张桌子:

表2:

我的妈妈 描述 COL_2 阶段 123 苹果 信息 P1 124 橙色 信息 P1 124 橙色 信息2 P1 125 香蕉 信息 P2 125 香蕉 信息2 P2
当您将子查询作为
JOIN
的结果时,为什么要使用它作为
MY_NUM
的子查询?这不是你想要的吗

INSERT INTO table1 (MY_NUM, COL_1, COL_2, COL_3)
    SELECT t2.MY_NUM, t2.COL_1, t3.COL_2, t2.COL_3
    FROM table2 t2 INNER JOIN
         table3 t3
         ON t2.MY_NUM = t3.MY_NUM;

对于修改后的数据,您只需添加
distinct
关键字:

INSERT INTO table1 (MY_NUM, DESCRIPTION, PROJECT, PHASE)
SELECT distinct
       t2.MY_NUM,
       t2.DESCRIPTION,
       t3.PROJECT,
       t2.PHASE
  FROM table2 t2
 INNER JOIN table3 t3
       ON t2.MY_NUM = t3.MY_NUM;


你似乎有非规范化的数据;例如,对于相同的
my_num
,出现在两行中的
phase
值。如果它们总是匹配,那么可能会有一个不同的表,其中只记录一次。事实上,它们可能最终得到不同的值,这要么是数据完整性问题;或者这个查询需要决定使用哪个值,或者返回到哪个值。然后,您必须决定如何选择-基于其他列,或最大/最小值等。

请提供样本数据、所需结果、对您想要做的事情的明确解释,并仅使用一个datbaser标记。假设您的
信息
值实际上是不同的;那么,对于每个
MY_NUM
值,您希望如何选择要复制到新表中的那些值?例如,在表2中是否有一个timestamp列,您想要获取最新的值?也许我对我的表太模糊了,所以我会让它们更清楚一些。请稍等。@AlexPoole我的问题被修改了。my_NUM在其他两个表中都有重复的值,我需要单独的值。@Theschmily。你需要在问题中清楚地解释这一点。没有评论。我已经修改了我的问题。这有用吗?@Theschmilly。不。它没有显示您开始使用的数据。我已经再次修改了它。这更好吗?这是我为自己过度复杂的事情。例如,我认为可能会更新阶段,但旧的阶段仍然存在,因此我认为您的最小/最大值答案最适合此问题,我甚至不需要使用最小/最大值,我只需要使用distinct。我不敢相信我对自己做了那样的事,哈哈。