MySQL 本身不支持 FULL OUTER JOIN
。 这会在尝试使用它时导致语法错误。
解决方案:使用 UNION
要复制 FULL OUTER JOIN
的行为,MySQL 需要使用 UNION
子句的解决方法。这结合了 LEFT JOIN
和 RIGHT 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中文网其他相关文章!