sql执行顺序及where和having的区别

发布时间 2023-04-11 20:09:15作者: HHHuskie
Where 是一个约束声明,使用Where约束来自数据库的数据,Where是在结果返回之前起作用的,Where中不能使用聚合函数。
Having 是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行。而where子句在查询过程中执行优先级高于聚合语句。
 

1.解释如下,sql语句的执行过程是:from-->where-->group by -->having --> select--- >order by;

2.聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误;

而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后
————————————————

3.语法上有个执行先后的差别,先执行where后执行having

4.功能上有个筛选的区别,where只能筛选记录行,不能筛选聚合后的记录行,having主要用来筛选分组聚合后的结果集。

————————————————

 

 

转自:https://blog.csdn.net/baidu_20876831/article/details/115323427