MySQL--查询重复电子邮箱方法汇总

本文介绍了三种在MySQL中查找并处理重复数据的方法。首先创建了一个Email表,并插入了数据。接着,通过法一使用子查询找出所有不唯一的email,然后通过法二利用`GROUP BY`和`HAVING`子句直接筛选出出现次数大于1的email。最后,法三利用左连接找到相同的email记录。这三种方法都成功地找出了表中重复的email地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:建表:

mysql> create table Email(id int,email varchar(255));

mysql> insert into Email(id,email) values('1','a@b.com');
mysql> insert into Email(id,email) values('2','b@b.com');
mysql> insert into Email(id,email) values('3','c@b.com');
mysql> insert into Email(id,email) values('4','a@b.com');


mysql> select * from Email;
+------+---------+
| id   | email   |
+------+---------+
|    1 | a@b.com |
|    2 | b@b.com |
|    3 | c@b.com |
|    4 | a@b.com |
+------+---------+
4 rows in set (0.00 sec)

第二步:

法一:

#计算表中各个email出现的次数,并将该表作为临时表p

select 
    distinct a.Email as Email 
from 
    Person as a 
where 
    a.Email = a.Email;

#从临时表中找出emali数量大于1 的email

select 
    email 
from 
    (select email, count(email) as countemail from Email group by email ) as p 
where    
    p.countemail>1;

#法二:

mysql> 
select 
    email 
from 
    Email 
group by 
    email 
having 
    count(email) > 1;


+---------+
| email   |
+---------+
| a@b.com |
+---------+
1 row in set (0.00 sec)

#法三:

mysql> 
select 
    distinct a.email 
from 
    Email as a left 
join 
    Email as b 
on 
    a.email = b.email 
where 
    a.id != b.id;


+---------+
| email   |
+---------+
| a@b.com |
+---------+
1 row in set (0.01 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值