查询结果分组的语法结构:
[GROUP BY {col_name | position}] [ASC | DESC],...]
比如对性别进行分组:
mysql> SELECT sex FROM users GROUP BY sex; +------+ | sex | +------+ | NULL | | 0 | +------+ 2 rows in set (0.01 sec)
分组结果为NULL和0,因为所有的用户只有NULL和0这两个值:
mysql> SELECT sex FROM users; +------+ | sex | +------+ | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | | NULL | +------+ 8 rows in set (0.00 sec)
另外BY后面除了可以直接写名字,还可以写位置,比如:
mysql> SELECT sex FROM users GROUP BY 1; +------+ | sex | +------+ | NULL | | 0 | +------+ 2 rows in set (0.00 sec)
但是并不推荐这种方式
ps. 看到这里的时候,并没有理解1的作用,在问答区找到了答案:
问:关于1的作用到底是什么?
答:1不是代表id,是代表SELECT sex….语句中的sex,所以这里的1其实就是sex的意思;如果SELECT后面跟多个字段,比如username,sex两个字段,如果你GROUP BY还是希望用sex字段的话,就要用数字2而不是1了,这是因为sex排在username后面。——摘自Brian_Zhong回答
请登录之后再进行评论