Oracle - 单行子查询返回多行

时间:2014-02-14 23:25:41

标签: oracle sql-update

我有一个查询,我正在尝试让它在oracle上工作但是得到以下错误

SQL错误:ORA-01427:单行子查询返回多行

查询是:

UPDATE TARGET A
SET A.COL1=(SELECT B.COL1 FROM SOURCE B) 
WHERE A.COL2=(SELECT B.COL2 FROM SOURCE B)

基本上,我只是尝试更新在连接中匹配的记录。

我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您的UPDATE语句需要是相关更新 - 您需要A中的一些键,告诉您B中的哪一行要检索新COL1 1}}价值。您的WHERE子句也应该是INEXISTS,因为它需要返回多行。假设COL2是密钥(基于您的WHERE子句),我猜你想要

UPDATE target a
   SET a.col1 = (SELECT b.col1
                   FROM source b
                  WHERE a.col2 = b.col2)
 WHERE EXISTS( SELECT 1
                 FROM source b
                WHERE a.col2 = b.col2 )

如果这不是您想要的,那么发布一些表定义,样本数据和预期输出将非常有用。