Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich einen FULL OUTER JOIN in MySQL durchführen?

Sie haben keine vollständigen Joins in MySQL, aber Sie können sie sicher emulieren .

Für ein Code Beispiel transkribiert von dieser Stack-Overflow-Frage Sie haben:

Mit zwei Tabellen t1, t2:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

Die obige Abfrage funktioniert für Sonderfälle, in denen ein vollständiger äußerer Join Der Vorgang würde keine doppelten Zeilen erzeugen. Die obige Abfrage hängt von der UNION ab Set-Operator, um doppelte Zeilen zu entfernen, die durch das Abfragemuster eingeführt wurden. Wir können die Einführung doppelter Zeilen vermeiden, indem wir einen Anti-Join verwenden Muster für die zweite Abfrage, und verwenden Sie dann einen UNION ALL-Set-Operator, um die beiden Sets zu kombinieren. Im allgemeineren Fall, in dem ein Full Outer Join doppelte Zeilen zurückgeben würde, können wir Folgendes tun:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
WHERE t1.id IS NULL