Maison >base de données >tutoriel mysql >Comment contourner le manque de fonctionnalités FULL OUTER JOIN de MySQL ?
MySQL ne prend pas en charge nativement FULL OUTER JOIN
. Cela entraîne une erreur de syntaxe lors de la tentative de l'utiliser.
La solution : utiliser UNION
Pour reproduire le comportement d'un FULL OUTER JOIN
, MySQL nécessite une solution de contournement utilisant la clause UNION
. Ceci combine les résultats d'un LEFT JOIN
et d'un RIGHT JOIN
.
Voici comment y parvenir :
<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>
Cette requête fusionne efficacement les résultats d'un LEFT JOIN
(toutes les lignes de la table de gauche, les lignes correspondantes de la droite) et d'un RIGHT JOIN
(toutes les lignes de la table de droite, les lignes correspondantes de la gauche), fournissant le ensemble complet de données comme le ferait un FULL OUTER JOIN
. Notez que les doublons seront supprimés par l'opération UNION
. Si vous devez conserver les doublons, utilisez UNION ALL
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!