2010-09-16 1 views

Répondre

7

Pour obtenir les mêmes résultats que votre requête ci-dessus, vous pouvez le faire:

SELECT COALESCE(a.c, b.c) AS c 
FROM a 
FULL OUTER JOIN b 
    ON b.c = a.c 

Cependant, cela vous donnera les mêmes résultats comme UNION qui n'est pas tout à fait la même chose que UNION ALL (comme les doublons seront supprimés). Pour faire une UNION tout, vous aurez besoin de faire la même chose, mais ont la condition de jointure échouent:

SELECT COALESCE(a.c, b.c) AS c 
FROM a 
FULL OUTER JOIN b 
    ON 1 = 0 

Dans les deux cas, je ne suis pas sûr que ce serait beaucoup plus rapide que de le faire en utilisant UNION.

+0

Bennor, c'est cool! (1 = 0) - le meilleur! la performance n'est pas un problème dans cette question. Je pourrais poser cette question de l'autre côté: "comment éviter d'utiliser FULL (OUTER) JOIN ..." je pense, ce n'est rien à ajouter à votre réponse. – garik

Questions connexes