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 优化了代码,因为不需要 ID
s。
只需return你想要的值:
(select ?.CODE from TAB2 as A left outer join TAB3 as T on A.TAGID = T.ID)
问号是 A
或 T
,具体取决于值来自哪个 table。
我想根据 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 优化了代码,因为不需要 ID
s。
只需return你想要的值:
(select ?.CODE from TAB2 as A left outer join TAB3 as T on A.TAGID = T.ID)
问号是 A
或 T
,具体取决于值来自哪个 table。