码迷,mamicode.com
首页 > 数据库 > 详细

mysql中先执行where还是group by

时间:2021-01-08 10:39:18      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:通过   rom   UNC   mysq   func   type   where   根据   数据   

mysql中这些关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。

首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数)

然后通过Group By关键字对视图进行分组 

接着根据Having关键字后面指定的筛选条件,将分组后不满足条件的记录筛选掉

最后按照Order By语句对视图进行排序,这样最终的结果就产生了。

having子句可以让我们筛选成组后的各种数据,where子句在聚合前先筛选记录,也就是说作用在group by和having子句前。而having子句在聚合后对组记录进行筛选。

having可以用聚合函数,如having sum(money) > 1000

  1. SELECT user_type,is_admin ,SUM(id) FROM saut_m_user
  2. WHERE id > 100
  3. GROUP BY user_type,is_admin
  4. HAVING SUM(status) < 500
  5. ORDER BY is_admin ASC
    技术图片

     

     

mysql中先执行where还是group by

标签:通过   rom   UNC   mysq   func   type   where   根据   数据   

原文地址:https://www.cnblogs.com/Dfrank/p/14240080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!