嵌套在From子句中选择

Mil*_*ldC 4 sql oracle

在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)

选择*有效,但这不是我想要的.谁知道怎么做?

Jus*_*ave 7

无论我是明确指定别名还是指定了一个别名,您发布的查询都适合我*.当你得到例外时,你能发布你正在运行的确切查询吗?

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中使用区分大小写的标识符.