簡體   English   中英

MySQL:如何將兩個表與一列合並?

[英]MySQL : How to merge two tables with a column?

每個人。

我有2張桌子。

tbl_a

id    Col_A   Col_B
1     1       2
3     3       4

tbl_b

id    Col_C   Col_D
1     100     101
2     102     103
4     104     105

我想制作一張表格,例如:

id    Col_A   Col_B   Col_C   Col_D
1     1       2       100     101
2     0       0       102     103
3     3       4       0       0
4     0       0       104     105

我從How to do a FULL OUTER JOIN in MySQL? 中嘗試了 SQL ,但這不是我想要的正確結果。

查詢語句:

SELECT * FROM tbl_a
LEFT  JOIN tbl_b ON tbl_a.id = tbl_b.id
UNION
SELECT * FROM tbl_a
RIGHT JOIN tbl_b ON tbl_a.id = tbl_b.id

結果:

id     Col A  Col B   id(1)   Col C     Col D
1      1      2       1       100       101
3      3      4       (NULL)  (NULL)    (NULL)
(NULL) (NULL) (NULL)  2       102       103
(NULL) (NULL) (NULL)  4       104       105

我怎樣才能得到正確的結果? 任何幫助將不勝感激。

謝謝你。

這將給出所需的結果:

SELECT * FROM
(
    SELECT tbl_a.id, 
    tbl_a.Col_A, 
    tbl_a.Col_B, 
    COALESCE(tbl_b.Col_C, 0) AS Col_C, 
    COALESCE(tbl_b.Col_D, 0) AS Col_D
    FROM tbl_a
    LEFT  JOIN tbl_b ON tbl_a.id = tbl_b.id
    UNION
    SELECT tbl_b.id, 
    COALESCE(tbl_a.Col_A, 0) AS Col_A, 
    COALESCE(tbl_a.Col_B, 0) AS Col_B, 
    tbl_b.Col_C, 
    tbl_b.Col_D
    FROM tbl_a
    RIGHT JOIN tbl_b ON tbl_a.id = tbl_b.id
)
AS a 
ORDER BY id;

像這樣嘗試

SELECT 
    IFNULL(tbl_a.id, tbl_b.id) AS id,
    IFNULL(tbl_a.Col_A, 0) as Col_A,
    IFNULL(tbl_a.Col_B, 0) as Col_B,
    IFNULL(tbl_b.Col_C, 0) as Col_C,
    IFNULL(tbl_b.Col_D, 0) as Col_D
FROM
    tbl_a
       LEFT JOIN
           tbl_b ON tbl_a.id = tbl_b.id 
UNION 
SELECT 
     IFNULL(tbl_a.id, tbl_b.id) AS id,
     IFNULL(tbl_a.Col_A, 0) as Col_A,
     IFNULL(tbl_a.Col_B, 0) as Col_B,
     IFNULL(tbl_b.Col_C, 0) as Col_C,
     IFNULL(tbl_b.Col_D, 0) as Col_D
 FROM
     tbl_a
       RIGHT JOIN
         tbl_b ON tbl_a.id = tbl_b.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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