Oracle 我想使用T3列和三个表关系来更新T1
这会给出错误“ORA-01427:单行子查询返回多行”。错误消息Oracle 我想使用T3列和三个表关系来更新T1,oracle,Oracle,这会给出错误“ORA-01427:单行子查询返回多行”。错误消息 UPDATE TABLE1 T1 SET T1.CENTERNAME= (SELECT AC.CENTERNAME FROM TABLE2 T2 INNER JOIN TABLET3 AN ON T2.CENTERID = T3.LOCATIONID INNER JOIN TABLE1 T1 ON T3.LOG_ID = T1.LOGID W HERE TRUNC(T1.ROW_DATE)='25-MAR-2014'); 意
UPDATE TABLE1 T1 SET T1.CENTERNAME=
(SELECT AC.CENTERNAME
FROM TABLE2 T2 INNER JOIN TABLET3 AN ON T2.CENTERID = T3.LOCATIONID
INNER JOIN TABLE1 T1 ON T3.LOG_ID = T1.LOGID W
HERE TRUNC(T1.ROW_DATE)='25-MAR-2014');
意味着,呃,子查询返回的不仅仅是行。也就是说,你陈述的这一部分
ORA-01427: single-row subquery returns more than one row
返回的行数大于。发生此错误的原因是更新的SET部分依赖于相等运算符-SET T1.CENTERNAME=
,因此只能取一个值
如果没有关于数据结构的更多细节,很难确定,但我怀疑您真正想要的是这样的东西
(SELECT AC.CENTERNAME
FROM TABLE2 T2 INNER JOIN TABLET3 AN ON T2.CENTERID = T3.LOCATIONID
INNER JOIN TABLE1 T1 ON T3.LOG_ID = T1.LOGID
WHERE TRUNC(T1.ROW_DATE)='25-MAR-2014')
(我已经整理了您的编校以使别名一致。)错误消息非常清楚,您的内部select语句返回多行。你需要解决这个问题。我们不知道您的数据结构是什么样的。您真的想加入子任务中新版本的
table1
,还是应该与外部版本关联?
UPDATE TABLE1 T1
SET T1.CENTERNAME= (SELECT T2.CENTERNAME
FROM TABLE2 T2
INNER JOIN TABLE3 T3
ON T2.CENTERID = T3.LOCATIONID
WHERE T3.LOG_ID = T1.LOGID )
WHERE TRUNC(T1.ROW_DATE)='25-MAR-2014'
/