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