Mysql如何按列合并表数据

时间:2017-01-18 13:31:21

标签: mysql sql

GROUP BY不适用于此

我有这个:

-----------------
name  col1  col2
-----------------
a     null  1
b     null  3
a     3     null
b     4     null

我需要这个结果:

-----------------
name  col1  col2
-----------------
a     3     1
b     4     3

2 个答案:

答案 0 :(得分:1)

使用MAX消除NULL,然后使用GROUP BY函数。

SELECT name, MAX(col1) AS col1, MAX(col2) AS col2
FROM yourtable
GROUP BY name

输出:

name col1 col2
a    3    1
b    4    3

既然你说GROUP BY不适用于此我假设它是更大查询的一部分,可能会使用子查询来获得结果?

SELECT t.name, 
      (SELECT MAX(ta.col1) FROM yourtable ta WHERE ta.name = t.name) AS col1,
      (SELECT MAX(tb.col2) FROM yourtable tb WHERE tb.name = t.name) AS col2
FROM yourtable t
GROUP BY t.name

答案 1 :(得分:0)

我会说GROUP BY在这里很完美:

select name, max(col1) col1, max(col2) col2
from tablename
group by name