数据库总结:where和having

whereh和having的区别

1:where和having区别;
having子句与where有相似之处但也有区别,都是设定条件的语句。
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
简单说来:
where子句:
select sum(num) as rmb from order where id>10

//只有先查询出id大于10的记录才能进行聚合语句

select deptno,avg(sal)

from emp

group by deptno

having deptno=10

---------------------------------------

select dpetno,avg(sal)

from emp

where deptno=10

group by deptono

---------------------------------------

也就是说(从理论上讲),where是在查询前做条件限制,having是在查询后的结果集上做条件限制。

查询前做限制的话,返回的件数会少;而在查询后的结果集上做限制的话,之前的查询结果可能会很多,这样就会影响性能。

所以,一般是用where,having是在where不方便或者不能使用的情况下才使用。



猜你喜欢

转载自blog.csdn.net/juleen890/article/details/80861859