mysql - Group Concat 两列,但在 GROUPS 中——涉及三个分隔符

标签 mysql group-by concatenation 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

最佳答案

这就是你所描述的:

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/

相关文章:

python - 对行进行分组、排序并删除冗余

mysql - 交叉表中的 Group_Concat

javascript - 结果中不显示连接的空格

mysql - Doctrine Native SQL 多对多查询

php - MySql 使用左连接插入到 2 个不同的表中

java - 使用 WampServer 和 Java 将土耳其语字符写入 MySQL

php - Mysql/PHP 更新表 + 插入另一个表

mysql - 使用 group by 计算行数

php - 如何连接和存储 MYSQL 列值?

MySql,结合变量做变量名?