Heim >Datenbank >MySQL-Tutorial >Wie kann man den Mangel an FULL OUTER JOIN-Funktionalität in MySQL umgehen?

Wie kann man den Mangel an FULL OUTER JOIN-Funktionalität in MySQL umgehen?

Original
2025-01-09 21:01:42269Durchsuche

MySQL unterstützt FULL OUTER JOIN nicht nativ. Dies führt zu einem Syntaxfehler beim Versuch, es zu verwenden.

How to Work Around MySQL's Lack of FULL OUTER JOIN Functionality?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn