FROM 子句中子选择的 Oracle 语法?

Oracle syntax for subselect in FROM clause?

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

SELECT * FROM ( SELECT a FROM b );

但是,查看 SELECT documentation,我认为不可能在 from 子句中到达 select/subquery(例如从规则 table_referencejoin_clause)。

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

在您链接的文档中,您可以看到 table_reference 可以是 query_table_expression,也可以是 ( subquery )

Oracle 语法图非常详尽:

您要找的名字是:

  • table-引用 --> query-table_expression
  • 查询-table-表达式 --> 子查询

由于可选的lateral,所以有点混乱。

我想知道是否在允许表达的所有地方都允许横向。

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

您可以使用

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

或者直接使用

SELECT * FROM b
  WHERE (SELECT a FROM b)

但是这样一来,你就会有不止1个row.If你不会用到Where子句