2010-12-11 3 views
2

Mögliche Duplizieren:
MySQL: FULL OUTER JOIN - How do I merge one column?SQL Join auf der linken und rechten Tabelle null Zeilen zurückgeben

Echt einfache Frage, aber habe mich völlig verwirrt.

Say I die folgenden Tabellen:

TBL1

id - count1
a - 7
b - 4
d - 2

TBL2

id - count2
a - 3
c - 4

Ich möchte eine Tabelle erstellen, die das folgende Ergebnis liefert:

tbl_temp

id - count1 - count2
a - 7-3
b - 4 - null
c - null - 4
d - 2 - null

Welche Art von Verbindung muss ich verwenden?

Cheers,

Ben

Antwort

7

Idealer JOIN Sie würde einen FULL OUTER verwenden, aber es ist not supported in MySQL. Stattdessen können Sie es emulieren mit einem LINKEN und RECHTEN OUTER JOIN (oder eine andere LINKE mit den Tabellen umgekehrt) und UNION ALLE Ergebnisse.

SELECT 
    tbl1.id, 
    tbl1.count1, 
    tbl2.count2 
FROM tbl1 
LEFT JOIN tbl2 
ON tbl1.id = tbl2.id 

UNION ALL 

SELECT 
    tbl2.id, 
    tbl1.count1, 
    tbl2.count2 
FROM tbl2 
LEFT JOIN tbl1 
ON tbl1.id = tbl2.id 
WHERE tbl1.id IS NULL 

ORDER BY id 

Ergebnisse:

 
id count1 count2 
a 7  3  
b 4  NULL 
c NULL 4  
d 2  NULL 
+1

http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/ aussehen hier für verschiedene Lösungen. –

Verwandte Themen