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

时间:2015-08-20 13:57:40

标签: mysql group-by group-concat

如何在第一行中组合具有相同值的行并在行中放置null或空格而不影响select语句中的GROUP BY主题?看看我想要实现的目标并帮助我。 enter image description here

我的尝试查询是:

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

1 个答案:

答案 0 :(得分:2)

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

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

此查询将按subject内的regd排序:

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子句。

相关问题