Oracle ORA 00904具有左/右外部联接的无效标识符
我有如下疑问:Oracle ORA 00904具有左/右外部联接的无效标识符,oracle,join,oracle11g,partitioning,outer-join,Oracle,Join,Oracle11g,Partitioning,Outer Join,我有如下疑问: SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.id=table2.c_id 这给了我一个错误 ORA-00904“表2.c_id”无效标识符 问题是,查询与完全外部连接和内部连接一起工作-没有错误。就连这一条也行: SELECT * FROM table1, table2 WHERE table1.id=table2.c_id(+) 错误仅发生在右或左外部联接上,并且仅发生在测试db上 两个表都是分区表 生产数据库
SELECT *
FROM table1 LEFT OUTER JOIN table2
ON table1.id=table2.c_id
这给了我一个错误
ORA-00904“表2.c_id”无效标识符
问题是,查询与完全外部连接和内部连接一起工作-没有错误。就连这一条也行:
SELECT *
FROM table1, table2
WHERE table1.id=table2.c_id(+)
错误仅发生在右或左外部联接上,并且仅发生在测试db上
两个表都是分区表
生产数据库,其中查询运行完美-Oracle Database 11g Enterprise Edition 11.2.0.3.0版-64位生产
测试数据库,其中查询失败-Oracle Database 11g Enterprise Edition 11.2.0.4.0版-64位生产
两个数据库上的表配置相同
有什么建议吗?我看不出SQL有什么问题 在我的12c数据库中,没有问题:
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> create table x(id number);
Table created.
SQL> create table y(c_id number);
Table created.
SQL> insert into x values(1);
1 row created.
SQL> insert into y values(1);
1 row created.
SQL> insert into y values(2);
1 row created.
SQL> SELECT *
2 FROM y LEFT OUTER JOIN x
3 ON x.id=y.c_id;
C_ID ID
---------- ----------
1 1
2
在11g R2上,请看这个。你能试试这个吗
SELECT table1.* ,table2.*
FROM table1 LEFT OUTER JOIN table2
ON table1.id=table2.c_id
我没有你的桌子要测试。请发布示例数据的create table和insert语句。或者,创建一个SQL Fiddle并发布一个链接您是否尝试过为table1和table2使用别名,即从table1 t1左外连接table2 t2到t1.id=t2.c_id?是否涉及数据库链接?(Oracle在涉及DB链接时有很长的断开ANSI连接的历史)@FrankSchmitt是的,我使用了别名-没有成功。不确定数据库链接,将检查更多要检查的内容(所有与ANSI语法的Oracle错误相关):-其中一个表是否包含域索引?-其中一个表是否包含CLOB/BLOB列其中一个表是否包含XMLTYPE列?当然,这应该是任何问题,它是简单的外部联接,必须工作。。。这就是为什么我问是否有人知道是什么错了。可能是一些分区表问题…@Tatiana,这就是为什么我要求您提供这些表和示例数据。你只是给出了一个简单的查询,说它不工作。我理解它,但我不能把我们公司数据库的代码放在这里。。。我将尝试提供一些脚本(列的其他名称等)