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语句

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

解决方法

这是您的问题所在

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...