繁体   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