如何重写此查询不要使用UNION(UNION ALL)子句:
SELECT
c
FROM a
UNION
SELECT
c
FROM b
预期结果(记录集应该相同):
SELECT
c
FROM ....
答案 0 :(得分:7)
要获得与上述查询相同的结果,您可以执行以下操作:
SELECT COALESCE(a.c, b.c) AS c
FROM a
FULL OUTER JOIN b
ON b.c = a.c
但是,这将给你与UNION相同的结果,它与UNION ALL不完全相同(因为重复项将被删除)。要做一个UNION all,你需要做同样的事情,但是连接条件失败了:
SELECT COALESCE(a.c, b.c) AS c
FROM a
FULL OUTER JOIN b
ON 1 = 0
在任何一种情况下,我都不确定它会比使用UNION快得多。