如何在第一行中组合具有相同值的行并在行中放置null或空格而不影响select语句中的GROUP BY主题?看看我想要实现的目标并帮助我。
我的尝试查询是:
SELECT regd, GROUP_CONCAT(name order by name SEPARATOR ' ') as name,
subject, sc, fm FROM table GROUP BY regd, subject
答案 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
子句。