如何在没有临时表的情况下对子查询的结果进行UNION?

时间:2018-03-28 20:26:12

标签: mysql sql

我有一个复杂的查询,导致我希望UNION成为一个列的多个列。

天真的UNION构造使我为每个查询放置FROM以进行组合。我希望FROM是复杂查询的结果。

我想说:

SELECT row1 AS result FROM (complex query)
UNION
SELECT row2 AS result FROM (same complex query)
UNION
SELECT row3 AS result FROM (same complex query)
...

我如何在MySQL 5.6.10中做到这一点(我意识到CTE优雅地解决了我的问题),没有临时表(我的DBA是偏执狂)。

1 个答案:

答案 0 :(得分:1)

您可以使用下面的cte块:

with cte as
(
   complex query comes here
)
select row1 as result from cte
union
select row2 as result from cte
...

使用临时表是另一种替代解决方案。

更多cte示例:http://www.mysqltutorial.org/mysql-cte/

编辑:由于OP使用的是旧版本,因此这是一种替代解决方案:

在主要复杂查询中使用如下所示的#temp表:

Select ...
into #temp
from ...
...

然后,使用#temp表进行联合:

select row1 as result from #temp
union
select row2 as result from #temp