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的记录才能进行聚合语句 having子句:
*/ SELECT reportsto AS manager, count(*) AS reports FROM employees GROUP BY reportsto HAVING count(*) > 4
/* 以northwind库为例.having条件表达示为聚合语句。肯定的说having子句查询过程执行优先级别低于聚合语句 having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。