假设user表
select * from user group by user.group 出来的数据只有2条,而不是 user.group 为admin的一组,user.group 为 user 的为一组
select * from user group by user.group
user.group
admin
user
求解,mysql 怎么把数组分组?感觉蛮多地方需要用到分组。
mysql
认证高级PHP讲师
没有看太懂你的意思,用 group by user.group 就会出现2条,因为你的数据里只有 admin 和 user 两种 group 数据。
group by user.group
2
group
分组 是需要结合 count, sum 等统计方法使用的。
分组
count
sum
如果你要的是admin的数据在一起,user 的数据在一起,那就直接 order by user.group 就好了
order by user.group
用GROUP BY子句的话,如果只有一个条件的话,只按照该条件满足的所有唯一值,一个为一条数据。对于GROUP BY user.group,你只有两种唯一值:user和admin,所以就只会有两条数据。
GROUP BY
GROUP BY user.group
如果你想将相同user.group的数据放在一起,正如楼上所说,直接使用排序即可。
如果你想要相同的user.group合并成一行且不丢失user.name数据,可以使用GROUP_CONCAT()函数,将所有组内的name合并成一行且不丢失user.name数据,可以使用GROUP_CONCAT()函数,将所有组内的name合并成逗号分隔的字符串(当然可以改成其他分隔符)
user.name
GROUP_CONCAT()
name
SELECT *, GROUP_CONCAT(user.name) FROM user GROUP BY user.group
没有看太懂你的意思,用
group by user.group
就会出现2
条,因为你的数据里只有admin
和user
两种group
数据。分组
是需要结合count
,sum
等统计方法使用的。如果你要的是
admin
的数据在一起,user
的数据在一起,那就直接order by user.group
就好了用
GROUP BY
子句的话,如果只有一个条件的话,只按照该条件满足的所有唯一值,一个为一条数据。对于GROUP BY user.group
,你只有两种唯一值:user
和admin
,所以就只会有两条数据。如果你想将相同
user.group
的数据放在一起,正如楼上所说,直接使用排序即可。如果你想要相同的
user.group
合并成一行且不丢失user.name
数据,可以使用GROUP_CONCAT()
函数,将所有组内的name
合并成一行且不丢失user.name
数据,可以使用GROUP_CONCAT()
函数,将所有组内的name
合并成逗号分隔的字符串(当然可以改成其他分隔符)