Emulieren von MySQL FULL JOIN mit LEFT- und RIGHT JOINS
MySQL unterstützt FULL JOIN-Vorgänge nicht nativ. Es ist jedoch möglich, mit einer Kombination aus LEFT JOIN und RIGHT JOIN ähnliche Ergebnisse zu erzielen.
Das Problem verstehen
Das Ziel besteht darin, eine Ergebnismenge zurückzugeben, die enthält alle Datensätze aus beiden Tabellen, Personen und Bestellungen, auch wenn die übereinstimmenden Felder (P_Id) in einer der beiden Tabellen null sind.
Lösung
Um einen FULL JOIN zu simulieren, verwenden Sie die folgende Abfrage:
SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p LEFT JOIN Orders o ON p.P_Id = o.P_Id UNION ALL SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p RIGHT JOIN Orders o ON p.P_Id = o.P_Id WHERE p.P_Id IS NULL ORDER BY p.LastName;
Erläuterung
Diese Abfrage erzeugt einen Ergebnissatz, der mit dem in der Problemstellung beschriebenen identisch ist:
LastName | FirstName | OrderNo |
---|---|---|
Hansen | Ola | 22456 |
Hansen | Ola | 24562 |
Pettersen | Kari | 77895 |
Pettersen | Kari | 44678 |
Svendsen | Tove | 34764 |
Das obige ist der detaillierte Inhalt vonWie kann ich einen FULL JOIN in MySQL mit LEFT- und RIGHT-JOINs emulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!