2010-09-16 36 views

回答

7

要获得上述相同的结果作为查询,你可以这样做:

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做快得多。

+0

Bennor,很酷! (1 = 0) - 最好!绩效在这个问题上不是问题。我可以从另一边问这个问题:“如何避免使用FULL(OUTER)JOIN ...”我想,这是没有什么添加到您的答案。 – garik 2010-09-16 09:37:22

相关问题