我有一个查询,我正在尝试让它在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)
基本上,我只是尝试更新在连接中匹配的记录。
我非常感谢任何帮助。
答案 0 :(得分:3)
您的UPDATE
语句需要是相关更新 - 您需要A
中的一些键,告诉您B
中的哪一行要检索新COL1
1}}价值。您的WHERE
子句也应该是IN
或EXISTS
,因为它需要返回多行。假设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 )
如果这不是您想要的,那么发布一些表定义,样本数据和预期输出将非常有用。