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_reference
或 join_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子句
根据 Using Subqueries Oracle SQL 在 select 语句的 from 子句中接受子查询,如
SELECT * FROM ( SELECT a FROM b );
但是,查看 SELECT documentation,我认为不可能在 from 子句中到达 select/subquery(例如从规则 table_reference
或 join_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子句