组Concat两个列,但在GROUPS - 涉及三个分隔符

时间:2017-01-25 07:04:33

标签: mysql group-by concat group-concat

我们有一个mysql表

id name   groupid
1  user1  0
2  user2  0
3  user3  1
4  user4  1

我们想要GROUP CONCAT,以便我们得到输出

1,user1;2,user2---3,user3;4,user4

1 个答案:

答案 0 :(得分:2)

这就是你所描述的:

create table NoOneEverNamesTheTableInSqlQuestions (
  id int, 
  name text, 
  groupid int
);

insert into NoOneEverNamesTheTableInSqlQuestions values
  (1, 'user1', 0),
  (2, 'user2', 0),
  (3, 'user3', 1),
  (4, 'user4', 1);

select group_concat(g separator '---') as output 
from (
  select group_concat(concat_ws(',',id,name) separator ';') as g 
  from NoOneEverNamesTheTableInSqlQuestions 
  group by groupid
) as g;

输出,使用MySQL 8.0.0-dmr进行测试:

+-----------------------------------+
| output                            |
+-----------------------------------+
| 1,user1;2,user2---3,user3;4,user4 |
+-----------------------------------+

但我不知道你为什么要这样做。在应用程序代码中,这似乎更容易做到。