4
如何重写此查询不要使用UNION(UNION ALL)子句:如何重写此查询不使用union子句
SELECT
c
FROM a
UNION
SELECT
c
FROM b
预期的结果(记录应该是一样的):
SELECT
c
FROM ....
如何重写此查询不要使用UNION(UNION ALL)子句:如何重写此查询不使用union子句
SELECT
c
FROM a
UNION
SELECT
c
FROM b
预期的结果(记录应该是一样的):
SELECT
c
FROM ....
要获得上述相同的结果作为查询,你可以这样做:
SELECT COALESCE(a.c, b.c) AS c
FROM a
FULL OUTER JOIN b
ON b.c = a.c
然而,这会给你同样的结果作为与UNION ALL不完全相同的UNION(因为重复将被删除)。做一个UNION ALL,你需要做相同的,但有加盟条件失败:
SELECT COALESCE(a.c, b.c) AS c
FROM a
FULL OUTER JOIN b
ON 1 = 0
在任何情况下,我不知道这将是比使用UNION做快得多。
Bennor,很酷! (1 = 0) - 最好!绩效在这个问题上不是问题。我可以从另一边问这个问题:“如何避免使用FULL(OUTER)JOIN ...”我想,这是没有什么添加到您的答案。 – garik 2010-09-16 09:37:22