gar*_*rik 4 sql t-sql sql-server-2005
如何重写此查询不要使用UNION(UNION ALL)子句:
SELECT
c
FROM a
UNION
SELECT
c
FROM b
Run Code Online (Sandbox Code Playgroud)
预期结果(记录集应该相同):
SELECT
c
FROM ....
Run Code Online (Sandbox Code Playgroud)
要获得与上述查询相同的结果,您可以执行以下操作:
SELECT COALESCE(a.c, b.c) AS c
FROM a
FULL OUTER JOIN b
ON b.c = a.c
Run Code Online (Sandbox Code Playgroud)
但是,这将给出与UNION相同的结果,UNION与UNION ALL不完全相同(因为将删除重复项).要执行UNION all,您需要执行相同操作但连接条件失败:
SELECT COALESCE(a.c, b.c) AS c
FROM a
FULL OUTER JOIN b
ON 1 = 0
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,我都不确定它会比使用UNION快得多.