我试图从不同数据库的不同表的列更新数据库的表的列

时间:2017-12-19 15:05:51

标签: sql oracle

update table1
set table1.col1=(select t2.c2 as X from t2@dblink)
where t1.c2=(select t3.c3,t3.c4,t3.c5 from t3@dblink)

但我正在

  

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

有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

正如您所说,样本数据会有所帮助,并且会发布一致的信息(您正在更新TABLE1,之后使用T1,这是什么?)。

无论如何,这样的事情可能会给你一个想法:

update table1 t1 set
  t1.c1 = (select t2.c2 
           from t2@dblink t2
           where t2.some_column = t1.some_column  --> you miss this
          )
where t1.cs in (select t3.c3 from t3@dblink union
                select t3.c4 from t3@dblink union
                select t3.c5 from t3@dblink
               );

答案 1 :(得分:0)

问题:

您的子查询将返回多个记录,并且您正在使用单个值检查是否相等。

value1 <> {v2,v3,v4,v5,....}

您需要使用in子句(如果您打算将t1,cs与t2上的多列进行比较,请使用并集)