mysql group by 只显示一个?

假设user表

| id | name | group |
| 1 | evan | admin |
| 2| charlie | admin|
| 3 | kid | user |
| 4 | ward | user |
|5 | fy | user |
select * from user group by user.group
选出来为何只有2条数据,而不是把,group为admin的用户分为一组,把group为user的用户分为一组
求解,mysql怎么样才能达到想要的效果...
目前想到的只有全部取出来,然后遍历把user.group当key,然后重新获得分组。数据库能直接达到这样?

阅读 14.4k
5 个回答

mysql没有,自己写一个就行,直接 order by group 取出数据,然后:
伪代码

def map,arr, g
for x in list
    if x.group != g
      g = x.group
      arr.new
      map.put(g,arr)
   arr.add(x)

不少语言的集合操作已经包含了这样的功能,比如 java8...

这就是把admin分为一组,user分为一组得到两条数据啊,楼主说的我没听懂

楼主你想要什么样的数据?没看懂你的意图......你这样写的sql语句就是按照group这个字段来分组的,如果你想分组后显示这个组的所有信息,可以用group_concat()这个方法,这样就可以把group by后的每组的信息集中到一起,但是这个是字符串,你要取出来后自己转成数组。具体的sql语句大概是这样写,我没有测,你可以试试,select group_concat(user.name) as names,group_concat(user.id) as ids from user group by user.group

你分组后做什么处理?分组后每组只显示一行记录,一般配合sum、count、min、max等统计函数。

如果只是按分组顺序列出清单,没必要使用group by,直接order by group就可以了。

推荐问题