根据使用子查询,Oracle SQL接受选择语句的from子句中的子查询,例如
SELECT * FROM ( SELECT a FROM b );
但是,查看 SELECT 文档,我认为不可能在 from 子句中进行选择/子查询(例如,从规则 table_reference
或 join_clause
中)。
我在这里错过了什么,这部分 SQL 语法是否记录在其他地方?或者这是文档的另一个不完整部分?
在您链接的文档中,您可以看到table_reference
可以是query_table_expression
也可以是( subquery )
。
Oracle 语法图非常彻底:
您要查找的名称是:
- 表引用 -->查询table_expression
- 查询表表达式 --> 子查询
由于可选lateral
,这有点令人困惑。
我确实想知道是否允许在允许表达的任何地方都允许横向。
每个派生表都必须有自己的别名。
你可以使用类似的东西
SELECT * FROM b
WHERE a >
(SELECT a FROM b
WHERE a='India')
或者干脆使用
SELECT * FROM b
WHERE (SELECT a FROM b)
但是这样,您将拥有 1 行以上。如果您不使用 Where 子句