在SQL Server中,
您可以像这样编写嵌套SQL:
SELECT T.con
FROM (SELECT count(*) as "con" FROM EMP) AS T
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以获得一个可以嵌套到其他查询中的临时表T.
但我不能在oracle SQL中做同样的事情
它给了我 ORA-01747:invalid column
SELECT *
FROM (SELECT count(*) as "con" FROM EMP) T
Run Code Online (Sandbox Code Playgroud)
选择*有效,但这不是我想要的.谁知道怎么做?
无论我是明确指定别名还是指定了一个别名,您发布的查询都适合我*.当你得到例外时,你能发布你正在运行的确切查询吗?
SQL> SELECT *
2 FROM (SELECT count(*) as "con" FROM EMP) T;
con
----------
14
SQL> ed
Wrote file afiedt.buf
1 SELECT "con"
2* FROM (SELECT count(*) as "con" FROM EMP) T
SQL> /
con
----------
14
Run Code Online (Sandbox Code Playgroud)
我的猜测是你试图选择con没有双引号.如果您在Oracle中使用双引号标识符,那么您告诉Oracle您希望标识符区分大小写,这反过来意味着您始终必须以区分大小写的方式引用它,并且您必须每次用双引号括起列名.我强烈建议不要在Oracle中使用区分大小写的标识符.