表: Person
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| email | varchar |
+-------------+---------+
id 是该表的主键(具有唯一值的列)。
此表的每一行都包含一封电子邮件。电子邮件不包含大写字母。
编写解决方案来报告所有重复的电子邮件。 请注意,可以保证电子邮件字段不为 NULL。
以 任意顺序返回结果表。
结果格式如下例。
示例 1:
输入:
Person 表:
+----+---------+
| id | email |
+----+---------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+----+---------+
输出:
+---------+
| Email |
+---------+
| a@b.com |
+---------+
解释: a@b.com 出现了两次。
首先:
可以看到,email 变为了Emai所以需要取别名
select email as Email
出现了两次,但是输出只输出了一次
select distinct email as Email
要的是重复的email
where p1.email = p2.email
中和一下上面的
SELECT DISTINCT p1.email AS Email
FROM Person p1 ,Person p2
where
p1.email=p2.email
and
成功
看答案
答案的方法是
先找到email,然后算出email出现的次数
将此时的这个表作为临时的表,借此算出Email的表(本题需要的结果)
select Email from
( select Email, count(Email) as num from Person group by Email ) as statistic where num > 1 ;
selectfrom
(
select Email, count(Email) as num
from Persons
group by Email)
as statistic
-- statistic为临时的表
where num > 1 ;