MySQL中的WHERE和HAVING
使用GROUP BY语句时,有时会同时使用WHERE和HAVING,常常会因为搞不清楚要用哪个而写错,这里记录一下
TL;NRs
WEHRE语句必须在GROUP BY之前,用于对表中数据进行筛选HAVING语句必须在GROUP BY之后,用于对数据分组统计后的结果进行筛选
例子

对如上图所示的表t执行以下语句:
# 语句1
SELECT age, COUNT(*) FROM t
WHERE id > 4
GROUP BY age
HAVING age > 13
;
结果为

而执行语句2:
# 语句2
SELECT age, COUNT(*) FROM t
GROUP BY age
HAVING age > 13
;
结果为

执行语句3:
# 语句3
SELECT age, COUNT(*) FROM t
GROUP BY age
HAVING age > 13
WHERE id > 4
;
则报错

浙公网安备 33010602011771号