Mysql合并具有相同ID的多条记录忽略空字段

标签 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) 等领域中的数值。这些都没有达到预期的效果。任何帮助,将不胜感激。

最佳答案

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;

关于Mysql合并具有相同ID的多条记录忽略空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52649064/

相关文章:

php - 通过PHP调用MySQL存储过程报错

sql - JOIN 和子查询的组合如何以及为什么影响 MySQL 查询中的 GROUP BY 行为?

sql - 查找多个已知 ID 项的替代 SQL 方法?

javascript - 这个对象合并功能可能会出现哪些错误?

mysql - 在 Grails war 中几个小时后与数据库的连接丢失

mysql - 枢轴查询不起作用

java - 如果 sql 值更改,则更新 Android 应用程序

merge - (opencv) 将轮廓合并在一起

python - 将 View 与模板 View django 合并

php - 基于 php-mysql 的网站的管理和安全