有这么个表
ID | NAME |
1 | 张三 |
1 | 李四 |
2 | 王五 |
2 | 小六 |
要得到以下结果:
ID | NAME |
1 | 张三,李四 |
2 | 王五,小六 |
SQL:
select t.id,GROUP_CONCAT(t.name SEPARATOR ',') from t group by t.id
注意 GROUP_CONCAT 中只有一个参数,是一个完整字符串。
假如要在分组中根据某个条件进行过滤,比如原表
ID | NAME | AGE |
1 | 张三 | 18 |
1 | 李四 | 25 |
1 | 王五 | 28 |
2 | 小六 | 18 |
2 | 小七 | 22 |
要得到以下结果:
ID | <20的NAME | >20的NAME |
1 | 张三 | 李四,王五 |
2 | 小六 | 小七 |
SQL:
select
t.id,
GROUP_CONCAT(CASE WHEN t.age < 20 THEN t.name END SEPARATOR ',' ) ,
GROUP_CONCAT(CASE WHEN t.age > 20 THEN t.name END SEPARATOR ',' )
from t
group by t.id