编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
示例:
±—±--------+
| Id | Email |
±—±--------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
±—±--------+
根据以上输入,你的查询应返回以下结果:
±--------+
| Email |
±--------+
| a@b.com |
±--------+
说明:所有电子邮箱都是小写字母。
这个有2个思路,一个是用group by,另一个是用自连接的方法,group by的方法会稍微快一些
group by:
思路:根据email的内容进行分组,再用having进行筛选,选出count>1的,就完成
select email from person group by email having count(email) >1;
自连接:
select distinct a.Email from person a,person b where a.email=b.email and a.id<>b.id;
注:
(1)<>的意思是不等于,在一些sql里面用!=表示
(2)distinct的作用是去重,相当于把Email的种类提取出来。