MySQL中的WHERE和HAVING

使用GROUP BY语句时,有时会同时使用WHEREHAVING,常常会因为搞不清楚要用哪个而写错,这里记录一下

TL;NRs

  • WEHRE语句必须在GROUP BY之前,用于对表中数据进行筛选
  • HAVING语句必须在GROUP BY之后,用于对数据分组统计后的结果进行筛选

例子

image

对如上图所示的表t执行以下语句:

# 语句1
SELECT age, COUNT(*) FROM t
WHERE id > 4
GROUP BY age
HAVING age > 13
;

结果为
image

而执行语句2:

# 语句2
SELECT age, COUNT(*) FROM t
GROUP BY age
HAVING age > 13
;

结果为
image

执行语句3:

# 语句3
SELECT age, COUNT(*) FROM t
GROUP BY age
HAVING age > 13
WHERE id > 4
;

则报错

posted @ 2022-05-26 21:28  计数寄存器  阅读(66)  评论(0编辑  收藏  举报