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