H2 不允许执行 select with join inside set

H2 does not allow to execute select with join inside set

我想根据 select 中的列和另外两个左连接将所有列填充到一个 table 中:

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 上执行它时我得到了这个错误:

Duplicate column name "ID"; SQL statement

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

这句话是你的问题:

(select * from TAB2 as A left outer join TAB3 as T on A.TAGID = T.ID)

据推测,您在两个 table 中都有一个 ID,因此 SELECT * return 的两列名为 ID。我很惊讶这在 Oracle 中有效——但也许 Oracle 优化了代码,因为不需要 IDs。

只需return你想要的值:

(select ?.CODE from TAB2 as A left outer join TAB3 as T on A.TAGID = T.ID)

问号是 AT,具体取决于值来自哪个 table。