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