Home >Database >Mysql Tutorial >How to Work Around MySQL's Lack of FULL OUTER JOIN Functionality?

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

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

MySQL does not natively support FULL OUTER JOIN. This results in a syntax error when attempting to use it.

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

The Solution: Using UNION

To replicate the behavior of a FULL OUTER JOIN, MySQL requires a workaround using the UNION clause. This combines the results of a LEFT JOIN and a RIGHT JOIN.

Here's how to achieve this:

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

This query effectively merges the results of a LEFT JOIN (all rows from the left table, matching rows from the right) and a RIGHT JOIN (all rows from the right table, matching rows from the left), providing the complete set of data as a FULL OUTER JOIN would. Note that duplicates will be removed by the UNION operation. If you need to preserve duplicates, use UNION ALL.

The above is the detailed content of How to Work Around MySQL's Lack of FULL OUTER JOIN Functionality?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn