簡體   English   中英

如何在MySQL中格式化兩個以上表的FULL OUTER JOIN?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM