FROM子句中的subselect的Oracle语法?

时间:2017-10-23 12:17:59

标签: sql oracle subquery sql-subselect inline-view

根据Using Subqueries,Oracle SQL在select语句的from子句中接受子查询,例如

SELECT * FROM ( SELECT a FROM b );

但是,查看SELECT documentation,我认为不可能在from子句中选择/子查询(例如,来自规则table_referencejoin_clause)。

我在这里遗漏了一些东西,这部分SQL语法是否记录在别处?或者这是文档中另一个不完整的部分?

3 个答案:

答案 0 :(得分:4)

在您关联的文档中,您可以看到table_reference可以是query_table_expression,可以是( subquery )

答案 1 :(得分:3)

Oracle语法图非常详尽:

您要找的名字是:

  • table-reference - >查询table_expression中
  • query-table-expression - >子查询

由于可选lateral,这有点令人困惑。

我确实想知道在任何地方都允许横向允许表达。

答案 2 :(得分:0)

每个派生表都必须有自己的别名。

您可以使用类似

的内容
  SELECT * FROM b
  WHERE a >
     (SELECT a FROM b
      WHERE a='India')

或者只是使用

SELECT * FROM b
  WHERE (SELECT a FROM b)

但是这样,你将有超过1行。如果你不使用 Where 子句