• 中文
    • English
  • 注册
  • 查看作者
  • 4-8:MySQL group by语句对查询结果分组

    查询结果分组的语法结构:

    [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回答

  • 0
  • 0
  • 0
  • 2.6k
  • 请登录之后再进行评论

    登录
    单栏布局 侧栏位置: