mysql pgsql 实现多行记录合并成一行 分组合并 用指定字符做分割

数据库服务器环境

数据库版本
mysql5.7
PostgreSQL10.10

原表结构和数据

idnamegendermajor
1张三篮球
2张三足球
3李四游泳
4小周跑步
5王二健身
6小周网球
7张三足球

mysql

SQL

select demo_table.name, group_concat(major separator ',') as combine_name
from demo_table
group by name

结果

namecombine_name
小周跑步,网球
张三篮球,足球,足球
李四游泳
王二健身

去重

select demo_table.name, group_concat(distinct major separator ',') as combine_name
from demo_table
group by name

去重之后的查询结果

namecombine_name
小周网球,跑步
张三篮球,足球
李四游泳
王二健身

pgsql

SQL

select name ,
       array_to_string(array (select unnest(array_agg(major))), ',') as combination_name
from demo_table
group by name

结果

namecombination_name
张三篮球,足球,足球
李四游泳
小周跑步,网球
王二健身

去重

select name ,
       array_to_string(array (select unnest(array_agg(distinct major))), ',') as combination_name
from demo_table
group by name

去重之后的结果

namecombination_name
小周网球,跑步
张三篮球,足球
李四游泳
王二健身

相关文章导读

mysql 在select查询语句中使用临时变量累计求和 ;
相同列值的记录中再根据条件取其中最大或最新一条;
mysql经纬度求距离并排序

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值