我要基于select的列和其他两个的左连接来填充一个表中的所有列:
update TAB1 as P
set P.COL1 = (
select CODE from (
select * from TAB2 as A left outer join TAB3 as T on A.TAGID = T.ID
) as O
where P.ACTID = O.ACTID
);
它在Oracle上正常工作,但是当我想在h2上执行它时,出现此错误:
重复的列名“ ID”; SQL语句
我不知道哪里出了问题。我找不到任何解决方案。 谢谢答案
答案 0 :(得分:1)
这是您的问题所在
(select * from TAB2 as A left outer join TAB3 as T on A.TAGID = T.ID)
大概在两个表中都有一个ID
,因此SELECT *
返回两个名为ID
的列。令我惊讶的是,这在Oracle中行得通-但也许Oracle可以优化代码,因为不需要ID
。
只需返回您想要的值:
(select ?.CODE from TAB2 as A left outer join TAB3 as T on A.TAGID = T.ID)
问号是A
还是T
,具体取决于该值来自哪个表。