GROUP BY&ORDER BY&HAVING&WHERE及其顺序

GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前;
HAVING子句必须出现在ORDER BY子句之后。
(WHERE先执行,再GROUP BY分组;GROUP BY先分组,HAVING再执行。)

SELECT vend_id, COUNT(*) AS num_prods
FROM products
WHERE prod_proce >= 10
GROUP BY vend_id
HAVING COUNT(*) >=2;

除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出,在上面的例子中,COUNT(*)是聚集函数,vend_id列在SELECT中出现了,在GROUP BY中也出现了,如果SELECT后面还添加了别的列,比如sales,而sales没有出现在GROUP BY后面,就会出错。


猜你喜欢

转载自www.cnblogs.com/yuanfei1110111/p/10284878.html