我有两个表,table1
和table2
table1
id | val |
a | |
a | |
b | |
b | |
table2
id | val |
a | 2 |
a | 3 |
b | 1 |
b | 0 |
c | 5 |
d | 2 |
d | -2 |
我想根据val
的值填充table1
的{{1}}个值,以获得:
table2
我在做什么
table1
id | val |
a | 2 |
a | 3 |
b | 1 |
b | 0 |
但我得到的是一个包含四列重复每个值两次的表格。
答案 0 :(得分:1)
如果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
答案 1 :(得分:0)
这是对您的查询的唯一解释。我们可以保留table2
的记录,具体取决于id
中table1
的{{1}}值是否存在:
SELECT t2.id, t2.val
FROM table2 t2
INNER JOIN
(
SELECT DISTINCT id
FROM table1
) t1
ON t2.id = t1.id