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不方便或者不能使用的情况下才使用。