一、题目
二、分析
可以通过统计相同的email出现次数,返回出现次数大于1的。使用 group by 实现相同字段的分类。
三、语句
3.1 使用 group by 和 where 结合
select Email
from
(select Email, count(Email) as num
from Person
group by Email)
as e
where e.num >1
3.2 使用 group by 和 having 结合
select Email
from Person
group by Email
having count(Email) >1
四、知识点
4.1 关键字优先顺序
顺序:
where > group by(聚合函数) > having > order by
解析:
由于优先顺序不同,若要在外部直接查询,需要使用优先级比 group by 更低的 having,不能使用优先级更高的 where
where: 分组前过滤,优先级最高
子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
having:分组后过滤,优先级较低
子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
错误示例: