mysql pgsql 按照指定字段分组实现多行合并成一行
数据库服务器环境
数据库 版本 mysql 5.7 PostgreSQL 10.10
原表结构和数据
id name gender major 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
结果
name combine_name 小周 跑步,网球 张三 篮球,足球,足球 李四 游泳 王二 健身
去重
select demo_table. name, group_concat( distinct major separator ',' ) as combine_name
from demo_table
group by name
去重之后的查询结果
name combine_name 小周 网球,跑步 张三 篮球,足球 李四 游泳 王二 健身
pgsql
SQL
select name ,
array_to_string( array ( select unnest( array_agg( major) ) ) , ',' ) as combination_name
from demo_table
group by name
结果
name combination_name 张三 篮球,足球,足球 李四 游泳 小周 跑步,网球 王二 健身
去重
select name ,
array_to_string( array ( select unnest( array_agg( distinct major) ) ) , ',' ) as combination_name
from demo_table
group by name
去重之后的结果
name combination_name 小周 网球,跑步 张三 篮球,足球 李四 游泳 王二 健身
相关文章导读
mysql 在select查询语句中使用临时变量累计求和 ; 相同列值的记录中再根据条件取其中最大或最新一条; mysql经纬度求距离并排序