我在mysql工作台上工作,并处理一个需求。
这是我的表格数据

ID  Name
1   A
1   B
2   C
2   D
3   E
3   F

预期产量
ID  Name
1   A,B
2   C,D
3   E,F

我已经用GROUP CONCAT函数得到了输出。但是我想不使用这样的函数来解决这个问题。
我知道这是有可能的,但我无法通过设计逻辑来解决这个问题。
有什么建议吗?
提前谢谢!!

最佳答案

select      id
           ,max(names) as names

from       (select       @prev_id   := @id                                                                          as previous_id
                        ,@id        := t.id                                                                         as id
                        ,@name      := case t.id when @prev_id then concat_ws(',',@name,t.name) else t.name end     as names

                        ,name

            from        t

            order by    t.id
                       ,t.name
            ) t

group by    id
;

10-08 07:20
查看更多