使用子句子查询可用于Oracle中的整个SQL语句

yud*_*nge 0 sql oracle

我正在尝试编写一个SQL语句,它在Oracle中多次重用With子句的子查询.

With mySubQ as (
    ...
) 

Select Something

From SomeTable, 
(
   Select *
   From mySubQ 
   where mySubQ.Something >= 0
) newSubQ

where mySubQ.Something = SomeTable.Something
Run Code Online (Sandbox Code Playgroud)

这给了我错误 - ORA-32034不支持使用WITH子句

我错过了什么?

Bar*_*mar 5

您需要加入mySubQ,而不仅仅是定义它.

WITH mySubQ AS (...)
SELECT Something
FROM SomeTable
JOIN mySubQ ON mySubQ.Something = SomeTable.Something
WHERE mySubQ.Something >= 0
Run Code Online (Sandbox Code Playgroud)

如果将查询mySubQ放在子查询中,则无法mySubQWHERE主查询的子句中引用.每个级别的查询只能访问自己FROMJOIN子句中的表,而不能访问子查询中的表.