Maison >base de données >tutoriel mysql >Comment contourner le manque de fonctionnalités FULL OUTER JOIN de MySQL ?

Comment contourner le manque de fonctionnalités FULL OUTER JOIN de MySQL ?

original
2025-01-09 21:01:42248parcourir

MySQL ne prend pas en charge nativement FULL OUTER JOIN. Cela entraîne une erreur de syntaxe lors de la tentative de l'utiliser.

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn