mySQL GROUP_CONCAT不同的分隔符每个x结果

时间:2020-02-04 08:34:23

标签: mysql sql group-concat separator

在mySQL查询中是

GROUP_CONCAT(fieldname SEPARATOR ', ')

但字段with不应太长。 因此,我希望在x个数据集之后使用一个不同的分隔符(即每个第三个分隔符应为'\ n')

我很乐意为此寻求帮助。 谢谢!

1 个答案:

答案 0 :(得分:0)

这真是痛苦。一种方法使用lead()将三个值组合在一起,然后将这些值过滤为每三个值:

select x,
       group_concat(col_3 separator '; ')
from (select t.x,
             concat_ws(', ',
                       col,
                       lead(col, 1) over (order by ?),
                       lead(col, 2) over (order by ?)
                      ) as col_3
             row_number() over (partition by x order by ?) as seqnum
      from t
     ) t
where mod(seqnum, 3) = 1
group by x;

如果需要其他聚合,则可以过滤group_concat()

select x,
       group_concat(case when mod(seqnum, 3) = 1 then col_3 end separator '; ')
相关问题