数据库中where与having的区别
WHERE和HAVING的区别?
- where 在分组之前进行过滤,如果不满足条件,则不参与分组;having在分组之后进行过滤,如果不满足结果,则不会被查询出来;
- where 后不可以跟聚合函数,having可以进行聚合函数的判断;
GROUP BY,HAVING,WHERE区别以及顺序
- GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前,HAVING语句必须在ORDER BY子句之后;
- WHERE先执行,再GROUP BY分组;
- GROUP BY先分组,HAVING再执行;
- 除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出;如下:
count()为聚集函数,在GROUP BY后面有v_id,所以SELECT需要后面有v_id该列;
SELECT v_id, COUNT (*) FROM t_product GROUP BY v_id;