Heim >Datenbank >MySQL-Tutorial >Wie kann man den Mangel an FULL OUTER JOIN-Funktionalität in MySQL umgehen?
MySQL unterstützt FULL OUTER JOIN
nicht nativ. Dies führt zu einem Syntaxfehler beim Versuch, es zu verwenden.
Die Lösung: Verwendung von UNION
Um das Verhalten eines FULL OUTER JOIN
zu reproduzieren, erfordert MySQL eine Problemumgehung mithilfe der UNION
-Klausel. Dies kombiniert die Ergebnisse eines LEFT JOIN
und eines RIGHT JOIN
.
So erreichen Sie das:
<code class="language-sql">SELECT airline, airports.icao_code, continent, country, province, city, website FROM airlines LEFT JOIN airports ON airlines.iaco_code = airports.iaco_code LEFT JOIN cities ON airports.city_id = cities.city_id LEFT JOIN provinces ON cities.province_id = provinces.province_id LEFT JOIN countries ON cities.country_id = countries.country_id LEFT JOIN continents ON countries.continent_id = continents.continent_id UNION SELECT airline, airports.icao_code, continent, country, province, city, website FROM airlines RIGHT JOIN airports ON airlines.iaco_code = airports.iaco_code RIGHT JOIN cities ON airports.city_id = cities.city_id RIGHT JOIN provinces ON cities.province_id = provinces.province_id RIGHT JOIN countries ON cities.country_id = countries.country_id RIGHT JOIN continents ON countries.continent_id = continents.continent_id;</code>
Diese Abfrage führt effektiv die Ergebnisse eines LEFT JOIN
(alle Zeilen aus der linken Tabelle, passende Zeilen von rechts) und eines RIGHT JOIN
(alle Zeilen aus der rechten Tabelle, passende Zeilen von links) zusammen und liefert die vollständigen Datensatz, wie es ein FULL OUTER JOIN
tun würde. Beachten Sie, dass Duplikate durch den UNION
-Vorgang entfernt werden. Wenn Sie Duplikate beibehalten müssen, verwenden Sie UNION ALL
.
Das obige ist der detaillierte Inhalt vonWie kann man den Mangel an FULL OUTER JOIN-Funktionalität in MySQL umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!