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经纬度求距离并排序