我试图找到表2中的所有记录,这些记录在表3或表4中都不存在。我必须在我的查询中使用表1,因为它为我提供了将表2与表3连接的关键和表4.
但是,我一直在"ORA-00904:invalid identifier" error on "T1.COL3"
以下是我的询问:
Select T1.COL1 FROM Tab1 T1 , Tab2 T2
LEFT JOIN Tab3 T3 ON (T2. COL1=T1.COL1 AND T3. COL2=T1.COL3)
LEFT JOIN Tab4 T4 ON (T2. COL1=T1.COL1 AND T4. COL2=T1.COL3)
where ( T3. COL2 IS NULL and T4. COL2 IS NULL);
答案 0 :(得分:2)
由于oracle查询优化器中的BUG,我处理类似的错误。
然而,正如我在你的查询中看到的,将ansi sql(左外连接)与"混合,"指示连接至少是棘手的。
我相信你的情况,在"之前有T1,"使它在ON子句中不可见,被解释为仅包括T2,T3和T4。
我会尝试像这样包装它
Select T1.COL1 FROM Tab1 T1 inner join Tab2 T2 on T2. COL1=T1.COL1
LEFT JOIN Tab3 T3 ON T3. COL2=T1.COL3
LEFT JOIN Tab4 T4 ON T4. COL2=T1.COL3
where ( T3. COL2 IS NULL and T4. COL2 IS NULL);
答案 1 :(得分:1)
正如您所见here,ORA-00904
错误表示列名无效或缺失。
在您的情况下,这是一个无效的名称。如文档所述,名称必须仅包含字母数字字符和特殊字符$,_和#。否则,名称必须用双引号括起来。因此,请尝试用双引号括起名称。