MYSQL  group by使用的注意事项有哪些(group by,mysql,开发技术)

时间:2024-05-04 08:47:46 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    前言:

    注意:本文以下内容基于 MySQL 5.7 InnoDB 数据库引擎。

    1.group by 后面不能加 where

    在 MySQL 中,所有的 SQL 查询语法要遵循以下语法顺序:

    • select

    • from

    • where

    • group by

    • having

    • order by

    • limit

    以上语法顺序是不能前后互换的,否则报错。比如我们不能在 group by 之后添加 where 查询语句,否则会出现如下错误:

    MYSQL  group by使用的注意事项有哪些

    语法顺序的执行是和 MySQL 的 select 语句执行顺序相关的,select 执行先后顺序如下:

    • from 阶段

    • where 阶段

    • group 阶段

    • having 阶段

    • select 阶段

    • order by 阶段

    • limit 阶段

    注意:其中 select 比较特殊,在进行查询语句编写时,要写在最前面,其余语法顺序要和执行先后顺序保持一致。

    2.having 或 group by 可单独使用

    having 和 group by 可以单独使用,如下查询所示:

    MYSQL  group by使用的注意事项有哪些

    3.having 和 group by 可使用别名

    **当 having 单独使用时,它的作用和 where 类似,但又有细微的不同。**比如在 where 中不能使用别名,但 having 和 group by 却可以别名。咱们创建一个测试表来演示一下,建表 SQL 如下:

    droptableifexistsstudent_score;createtablestudent_score(idintprimarykeyauto_incrementcomment'主键',namevarchar(250)comment'姓名',mathdecimal(4,1)comment'数学成绩',chinesedecimal(4,1)comment'语文成绩');insertintostudent_score(name,math,chinese)values('张三',50,50),('李四',80,80),('王五',90,90);

    表中的数据如下图所示:

    MYSQL  group by使用的注意事项有哪些

    当我们使用总成绩别名 total 分别在 where 和 having 中使用时,查询结果如下:

    MYSQL  group by使用的注意事项有哪些

    从上述结果可以看出,having 查询可以使用 select 中的别名,而 where 不能使用别名。 除了 having 可以使用别名之外,group by 也可以使用别名,

    如下图所示:

    MYSQL  group by使用的注意事项有哪些

    为什么where不能用别名?为having却可以?

    where 中不能使用别名,这和 MySQL 语句执行顺序有关,MySQL 语句执行顺序如下:

    • from 阶段

    • where 阶段

    • group 阶段

    • having 阶段

    • select 阶段

    • order by 阶段

    • limit 阶段

    也就是说,**在执行 where 查询时,select 还没执行,因此在 where 中想要使用还未执行的 select 中的别名是不行的。**那从上面的执行顺序可以看到,having 执行也在 select 之前,为什么它就可以使用 select 中的别名呢?

    这是因为 MySQL 在 5.7.5 之后做了扩展,允许在 having 中使用别名,官方文档中有相应的说明,

    如下图所示:

    MYSQL  group by使用的注意事项有哪些

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:MYSQL  group by使用的注意事项有哪些的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:Go语言中的函数与方法怎么使用下一篇:

    25 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18