为什么不起作用?
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual WHERE 1=1) b
ON (1=1);
我得到“ORA-00900:无效的SQL语句”。 有没有办法在子查询中使用WHERE子句?
编辑:版本9.2
SELECT *
FROM v$version
Oracle9i企业版9.2.0.8.0版 - 64位生产
以下执行得很好:
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual /*WHERE 1=1*/) b
ON (1=1)
答案 0 :(得分:1)
您使用的是哪个版本?
完全相同的SQL对我来说很好(Oracle数据库10g快捷版10.2.0.1.0版)。
答案 1 :(得分:1)
9i
以下的Oracle不支持ANSI
加入语法。
如果您在8i
及以下位置使用此功能:
SELECT a.*
FROM dual a,
(
SELECT *
FROM dual
WHERE 1 = 1
) b
WHERE 1 = 1
答案 2 :(得分:1)
它适用于9.2(32位版本是唯一的区别):
SQL> SELECT a.*
2 FROM dual a
3 JOIN (SELECT * FROM dual WHERE 1=1) b
4 ON (1=1);
D
-
X
SQL> quit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
答案 3 :(得分:0)
它看起来对我来说是正确的,我可以在10g中执行它,但它失败了8i,你使用的是哪个版本的Oracle?