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

Effiziente Möglichkeit, eine vollständige äußere Verknüpfung in MySQL zu simulieren?

Sie können einen LEFT JOIN und einen RIGHT JOIN verwenden:

SELECT * FROM tableA LEFT JOIN tableB ON tableA.b_id = tableB.id
UNION ALL
SELECT * FROM tableA RIGHT JOIN tableB ON tableA.b_id = tableB.id
WHERE tableA.b_id IS NULL

Es gibt auch einige Informationen auf Wikipedia zu diesem Thema:Full Outer Join .

Der Wikipedia-Artikel schlägt vor, eine UNION in MySQL zu verwenden. Dies ist etwas langsamer als UNION ALL, aber was noch wichtiger ist, es wird nicht immer das richtige Ergebnis liefern - es werden doppelte Zeilen aus der Ausgabe entfernt. Verwenden Sie hier also lieber UNION ALL statt UNION.