我的查询如下:
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上的表配置都是相同的。
有什么建议可以吗?
答案 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