我的查询结果是多个查询的并集。当我在联合中使用WITH子句时,我面临以下错误。有什么想法吗?
select column1 from TABLE_A
union
with abcd as (select * from TABLE_B)
select column2 from TABLE_A A, abcd
where abcd.m_reference = A.m_reference
ORA-32034:不支持使用WITH子句
32034. 00000 - "不支持使用WITH子句"
*原因:由于以下两个原因之一而无法使用WITH子句 1.尚未支持在WITH子句中嵌套WITH子句
2.对于集合查询,不能为分支指定WITH子句 3. WITH子句不能在括号内指定 *操作:正确查询并重试
答案 0 :(得分:7)
将您的WITH语句封装在虚拟选择中。
select column1 from TABLE_A
union
select * from (
with abcd as (select * from TABLE_B)
select column2 from TABLE_A A, abcd
where abcd.m_reference = A.m_reference
)
答案 1 :(得分:6)
在实际的UNION
查询之前,首先定义CTE。然后像使用普通表一样使用它:
with abcd as (select * from TABLE_B)
select column1 from TABLE_A
union
select column2
from TABLE_A A
inner join abcd
on abcd.m_reference = A.m_reference
您可以按如下方式使用多个CTE:
with cte1 AS (...),
cte2 AS (...)
select * from ...