2021.10.9 小白刷题日记之MYSQL

本文介绍了如何在SQL中查找并筛选出表中的重复数据。提供了两种方法:一是通过建立临时表统计每个Email的出现次数,然后筛选出数量大于1的;二是直接使用GROUP BY和HAVING子句进行过滤。这两种方法都能有效找出重复项,提高数据清理效率。
摘要由CSDN通过智能技术生成

解决在编写一个 SQL 查询,查找表中所有重复数据

先看问题在这里插入图片描述
意思就是把第一个表中的所有重复的Email筛选出来,输出为第二个表那样。

小朋友理解(分析题目)

题目的本质就是:一个元素出现重复,就说明这个元素出现的次数是大于等于2的,所以我们先把表中所有元素的个数统计出来,只需要通过
元素个数>1
来筛选出重复元素

开始动手

这里有两种方法,本质都是上述小朋友理解的那样

方法一

我们先要建一个统计元素个数的表(代码一部分,最后结合在下面)

 select Email,count(Email) as num  //把Email定义为数,count是常量的意思
 from Person  //Email来自Person(有兴趣的可以翻译一下题目)
 group by Email //做成一个新的Email 

结果如下

Emailnum
a@b.com2
c@d.com1

全部代码

select Email from(
    select Email,count(Email) as num 
    from Person 
    group by Email
) as statistic 
where num > 1;//元素个数大于1筛选
方法二

直接使用group by 和 having 使用
更加高效,大家直接记住便于下次使用
一行代码很好记的

select Email from Person Group by Email having count(Email)>1;

本文借鉴使用力扣官方解题思路,这是作者的第一篇学习记录,大家不喜勿喷。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值