Mysql 联系之合并同类项

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

先看问题

意思就是把第一个表中的所有重复的Email筛选出来,输出为第二个表那样。

小朋友理解(分析题目)

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

开始动手

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

方法一

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

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

结果如下

Email num
a@b.com 2
c@d.com 1

全部代码

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;

本文借鉴使用力扣官方解题思路。

posted @ 2023-09-30 11:24  Melo70000  阅读(64)  评论(0)    收藏  举报