Mysql中,where是聚合前筛选条件,用于行列数据进入,不可结合函数使用;而having则是用于聚合后数据的筛选,可以接合函数使用,一般having 跟在group by后面使用。
以下是实际使用:
找出person表中重复的邮箱
#方法1 使用临时表 语句比较复杂
select s.email from (
select email,count(email) as num from person group by email
) as s
where s.num>1
#方法2 使用having
select email from person group by email having count(email)>1
#注意having属于聚合后筛选,应在where后,且放置于order by后面