ホームページ >データベース >mysql チュートリアル >MySQL に FULL OUTER JOIN 機能がないことを回避するにはどうすればよいですか?

MySQL に FULL OUTER JOIN 機能がないことを回避するにはどうすればよいですか?

オリジナル
2025-01-09 21:01:42278ブラウズ

MySQL は FULL OUTER JOIN をネイティブにサポートしていません。 これにより、使用しようとすると構文エラーが発生します。

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

解決策: UNION の使用

FULL OUTER JOIN の動作を複製するには、MySQL では UNION 句を使用した回避策が必要です。これは、LEFT JOINRIGHT JOIN の結果を結合します。

これを達成する方法は次のとおりです:

<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>

このクエリは、LEFT JOIN (左側のテーブルのすべての行、右側の行と一致) と RIGHT JOIN (右側のテーブルのすべての行、左側の行と一致) の結果を効果的にマージします。 FULL OUTER JOIN と同様の完全なデータセット。 重複は UNION 操作によって削除されることに注意してください。 重複を保持する必要がある場合は、UNION ALL.

を使用してください。

以上がMySQL に FULL OUTER JOIN 機能がないことを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。