H2不允许执行带有内部连接的选择

时间:2020-09-09 09:12:27

标签: sql left-join h2

我要基于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语句

我不知道哪里出了问题。我找不到任何解决方案。 谢谢答案

1 个答案:

答案 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,具体取决于该值来自哪个表。

相关问题