如何合并 mysql 中具有相同值的行

How to combine rows with same values in mysql

如何在不影响 select 语句中的 GROUP BY 主题的情况下,将第一行中具有相同值的行组合在一起,并将 null 或 space 放入行中?看看我想要实现的目标并帮助我。

我尝试的查询是:

SELECT regd, GROUP_CONCAT(name order by name SEPARATOR ' ') as name,
 subject, sc, fm FROM table GROUP BY regd, subject

首先,我建议您在代码中而不是在数据库级别处理此问题!

但是,如果您绝对必须在一个查询中完成所有操作,您可以尝试 ranking over partition 并将 regd 列作为分区。您的预期输出在每个 regd 中具有相当任意排序的行。

此查询将在每个 regd:

中按 subject 排序
select t.regd,
case when r=1 then t.name else null end as name,
t.subject,
t.sc,t.fm
from
(
 select tt.*,
 case when regd = @curRegd then @rank := @rank +1 else @rank:=1 end as r,
 @curRegd := tt.regd
 from table tt
 join (SELECT @curRegd := 0,@rank:=0) r
 order by regd,subject
) t

最后,根据您存储的数据示例,此处似乎不需要聚合,即 GROUP BY 子句。