Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql如何按列合并表数据_Mysql_Sql - Fatal编程技术网

Mysql如何按列合并表数据

Mysql如何按列合并表数据,mysql,sql,Mysql,Sql,分组依据对此不起作用 我有这个: ----------------- name col1 col2 ----------------- a null 1 b null 3 a 3 null b 4 null 我需要这个结果: ----------------- name col1 col2 ----------------- a 3 1 b 4 3 我想说,groupby在这里是完美的: select

分组依据
对此不起作用

我有这个:

-----------------
name  col1  col2
-----------------
a     null  1
b     null  3
a     3     null
b     4     null
我需要这个结果:

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

我想说,
groupby
在这里是完美的:

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

使用
MAX
消除空值,然后使用
groupby
功能

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

name col1 col2
a    3    1
b    4    3
既然你说,
groupby
对此不起作用,我假设这是一个更大查询的一部分,也许可以使用子查询来获得结果

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
从表组中按名称选择名称、最大值(col1)、最大值(col2)
如果还有另一行(a、5、5)?如何更改结果?以及行(c,1,2)?不,我没有(a,5,5),因为此表是两个表并集的结果