首页  >  问答  >  正文

mysql 如何分组?

假设user表

id name group
1 evan admin
1 evan1 admin
1 evan2 admin
1 evan3 user
1 evan4 user

select * from user group by user.group 出来的数据只有2条,而不是 user.groupadmin的一组,user.groupuser 的为一组

求解,mysql 怎么把数组分组?感觉蛮多地方需要用到分组。

PHP中文网PHP中文网2663 天前1043

全部回复(2)我来回复

  • 伊谢尔伦

    伊谢尔伦2017-07-04 13:45:47

    没有看太懂你的意思,用 group by user.group 就会出现2条,因为你的数据里只有 adminuser 两种 group 数据。

    分组 是需要结合 count, sum 等统计方法使用的。

    如果你要的是admin的数据在一起,user 的数据在一起,那就直接 order by user.group 就好了

    回复
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-07-04 13:45:47

    GROUP BY子句的话,如果只有一个条件的话,只按照该条件满足的所有唯一值,一个为一条数据。对于GROUP BY user.group,你只有两种唯一值:useradmin,所以就只会有两条数据。

    如果你想将相同user.group的数据放在一起,正如楼上所说,直接使用排序即可。

    如果你想要相同的user.group合并成一行且不丢失user.name数据,可以使用GROUP_CONCAT()函数,将所有组内的name合并成一行且不丢失user.name数据,可以使用GROUP_CONCAT()函数,将所有组内的name合并成逗号分隔的字符串(当然可以改成其他分隔符)

    SELECT *, GROUP_CONCAT(user.name) FROM user GROUP BY user.group

    回复
    0
  • 取消回复