2014-02-14 140 views
1

我有我想要得到它的工作在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) 

基本上,我试图更新仅匹配在加入这些记录。

我会非常感谢任何帮助。

回答

3

UPDATE语句需要一个相关update--你需要在A一些关键的,告诉你去,以获取新的COL1值行B。您的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) 

如果不是你要找的内容,张贴一些表定义,样本数据和预期输出会很有帮助。