ORA 00904具有左/右外连接的无效标识符

时间:2015-10-27 08:55:57

标签: oracle join oracle11g partitioning outer-join

我的查询如下:

SELECT *
FROM table1 LEFT OUTER JOIN table2
ON table1.id=table2.c_id

它给了我一个错误

  

ORA-00904" table2.c_id"无效的标识符

问题是查询使用FULL OUTER JOIN和INNER JOIN - 没有错误。即使这个有效:

SELECT *
FROM table1, table2
WHERE table1.id=table2.c_id(+)

仅在右外连接或左外连接时出现错误,并且仅在测试数据库上出现错误。

两个表都是分区。

生产数据库,查询运行完美 - Oracle数据库11g企业版11.2.0.3.0版 - 64位生产

测试数据库,查询失败 - Oracle数据库11g企业版11.2.0.4.0版 - 64位生产

两个db上的表配置都是相同的。

有什么建议可以吗?

2 个答案:

答案 0 :(得分:0)

我没有看到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 上,请参阅此SQL Fiddle

答案 1 :(得分:-1)

你能尝试这个

吗?
 SELECT table1.* ,table2.*
 FROM table1 LEFT OUTER JOIN table2
 ON table1.id=table2.c_id