繁体   English   中英

mysql-如何基于列合并两个表?

[英]mysql - how to merge two tables based on a column?

我有两个表, table1table2

table1
    id |    val    |
    a  |           |
    a  |           |
    b  |           |
    b  |           |

table2
    id |    val    |
    a  |    2      |
    a  |    3      |
    b  |    1      |
    b  |    0      |
    c  |    5      |        
    d  |    2      |        
    d  |    -2     |

我想基于table2的值填充table1的值val以获得:

table1
    id |    val    |
    a  |    2      |
    a  |    3      |
    b  |    1      |
    b  |    0      |

这是我在做什么

SELECT *
FROM table1 JOIN table2 ON table1.id = table2.id;

但是我得到的是一张有四列的表,每个列重复两次。

如果val可为空:

SELECT DISTINCT tab1.id, ifnull(tab1.val, tab2.val) AS val
FROM tab1
JOIN tab2 ON tab1.id = tab2.id

如果val不为null:

SELECT DISTINCT tab1.id, if(tab1.val = '', tab2.val, tab1.val) AS val
FROM tab1
JOIN tab2 ON tab1.id = tab2.id

在此处输入图片说明

这是对您的查询唯一有意义的解释。 我们可以保留table2记录,具体取决于它们的id值是否存在于table1

SELECT t2.id, t2.val
FROM table2 t2
INNER JOIN
(
    SELECT DISTINCT id
    FROM table1
) t1
    ON t2.id = t1.id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM