MySQL合并具有相同ID的多个记录,忽略空字段

时间:2018-10-04 14:20:00

标签: mysql sql merge merging-data

我希望将多个具有相同ID的记录合并到每个ID中一个记录中。我不得不使用数据透视表从多个其他表中获取所需的数据,并将其转换为一个看起来像这样的临时表:

ID |Data1|Data2|Data3|Data4
1   asdf  NULL  NULL  NULL
1   NULL  blah  NULL  NULL
1   NULL  NULL  this  NULL
1   NULL  NULL  NULL  data
2   NULL  funk  NULL  NULL
2   NULL  NULL  jazz  NULL

我想找到一种方法,将具有相同ID的所有记录合并到新表中的新记录中,如下所示:

ID |Data1|Data2|Data3|Data4
1   asdf  blah  this  data
2   NULL  funk  jazz  NULL

我在这里和其他网站上浏览了多个其他类似的问题,这些问题似乎正在处理诸如此类(Merge multiple rows with same ID into one row)之类的字段中的数值。这些效果不理想。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:2)

MAX()GROUP BY子句一起使用:

SELECT t.ID, 
       MAX(t.Data1), 
       MAX(t.Data2), 
       MAX(t.Data3), 
       MAX(t.Data4) 
FROM table AS t
GROUP BY t.ID;

答案 1 :(得分:1)

如果每个列只有1个值(从数据样本中看起来像它),则可以使用聚合方法:

SELECT t.id ,
       max(t.data1) as data1,
       max(t.data2) as data2,
       max(t.data3) as data3,
       max(t.data3) as data3
FROM YourTable t
GROUP BY t.id