![](/img/trans.png)
[英]How to perform optimal FULL OUTER JOIN on more than two MySQL tables?
[英]How to format a FULL OUTER JOIN for more than two tables in mySQL?
我有四個桌子。
Table A Table B Table C Table D
+----+ +------+ +------+ +------+
| id | | id | | id | | id |
+----+ +------+ +------+ +------+
| 1 | | 2 | | 3 | | 4 |
+----+ | 4 | +------+ +------+
+------+
是否存在執行FULL OUTER JOIN這樣的輸出的查詢? :
+------+------+------+------+
| id | id | id | id |
+------+------+------+------+
| 1 | NULL | NULL | NULL |
| NULL | 2 | NULL | NULL |
| NULL | NULL | 3 | NULL |
| NULL | 4 | NULL | 4 |
+------+------+------+------+
我知道如何為2個表執行此操作:
SELECT * FROM table_a
LEFT JOIN table_b ON table_a.res_id = table_b.res_id
UNION
SELECT * FROM table_a
RIGHT JOIN table_b ON table_a.res_id = table_b.res_id;
但是我不知道如何對兩個以上的表執行此操作。
任何幫助表示贊賞。
SQL小提琴: http ://sqlfiddle.com/#!9/58f416/1
對所有表使用UNION子查詢。 然后,用它左聯接四個表:
SELECT
a.res_id as a_id,
b.res_id as b_id,
c.res_id as c_id,
d.res_id as d_id
FROM (
SELECT res_id FROM table_a
UNION
SELECT res_id FROM table_b
UNION
SELECT res_id FROM table_c
UNION
SELECT res_id FROM table_d
) u
LEFT JOIN table_a a ON a.res_id = u.res_id
LEFT JOIN table_b b ON b.res_id = u.res_id
LEFT JOIN table_c c ON c.res_id = u.res_id
LEFT JOIN table_d d ON d.res_id = u.res_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.