Jos*_*h K 48 php mysql sql join mysql-error-1064
SELECT airline, airports.icao_code, continent, country, province, city, website
FROM airlines
FULL OUTER JOIN airports ON airlines.iaco_code = airports.iaco_code
FULL OUTER JOIN cities ON airports.city_id = cities.city_id
FULL OUTER JOIN provinces ON cities.province_id = provinces.province_id
FULL OUTER JOIN countries ON cities.country_id = countries.country_id
FULL OUTER JOIN continents ON countries.continent_id = continents.continent_id
Run Code Online (Sandbox Code Playgroud)
它说
您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便
airports在第4行的'aerites_iaco_code = airports.iaco_code全外连接' 附近使用正确的语法
语法看起来对我来说.我之前从未做过很多连接,但是我需要在表中使用各种id交叉引用的列.
cle*_*tus 74
FULL OUTER JOIN在MySQL中没有.见7.2.12.外部联接简化和12.2.8.1.JOIN语法:
您可以
FULL OUTER JOIN使用UNION 模拟(从MySQL 4.0.0开始):有两个表t1,t2:
Run Code Online (Sandbox Code Playgroud)SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id有三个表t1,t2,t3:
Run Code Online (Sandbox Code Playgroud)SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id LEFT JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id LEFT JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id RIGHT JOIN t3 ON t2.id = t3.id
小智 13
克莱图斯的回答并不完全正确.UNION将删除包含的重复记录FULL OUTER JOIN.如果你需要重复使用类似的东西:
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
LEFT JOIN t3 ON t2.id = t3.id
LEFT JOIN t4 ON t3.id = t4.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
LEFT JOIN t3 ON t2.id = t3.id
LEFT JOIN t4 ON t3.id = t4.id
WHERE t1.id IS NULL
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
RIGHT JOIN t3 ON t2.id = t3.id
LEFT JOIN t4 ON t3.id = t4.id
WHERE t2.id IS NULL
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
RIGHT JOIN t3 ON t2.id = t3.id
RIGHT JOIN t4 ON t3.id = t4.id
WHERE t3.id IS NULL;
Run Code Online (Sandbox Code Playgroud)