我们有一个mysql表

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

我们需要组CONCAT,这样我们就可以得到
1,user1;2,user2---3,user3;4,user4

最佳答案

这就是你所描述的:

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 |
+-----------------------------------+

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

关于mysql - Group_concat两列,但在GROUPS中—涉及三个分隔符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41845385/

10-11 02:45
查看更多