1、需求描述
查询人员的年龄
1
| select t.age,t.name from table_name t where t.age = 20;
|
age |
name |
16 |
Jack |
16 |
Jones |
16 |
Mark |
16 |
Lucy |
16 |
Adams |
要达到的效果:
age |
names |
16 |
Jack,Jones,Mark,Lucy,Adams |
2、解决方案
1)oracle:listagg() within group()
1 2 3
| select t.age, listagg(t.name, ',') within group (order by t.name) names from table_name t where t.age = 20 group by t.age
|
2) postgresql:string_agg()
1 2 3
| select t.age, string_agg(t.name, ',') as names from table_name t where t.age = 20 group by t.age
|
3) mysql:group_concat()
1 2 3
| select t.age, group_concat(t.name order by t.name separator ',') as names from table_name t where t.age = 20 group by t.age
|