码迷,mamicode.com
首页 > 其他好文 > 详细

如何查找重复数据?

时间:2020-09-04 17:12:34      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:分组查询   div   from   having   ima   count   技术   表名   掌握   

【题目】

编写一个SQL查询,查找学生表中所有重复的学生名。

技术图片

【解题步骤】

  • 方法一

1)创建一个辅助表,将姓名列进行行分组汇总

select 姓名, count(姓名) as 计数
from 学生表
group by 姓名;

技术图片

 

 2)选出辅助表中计数大于1的姓名

select 姓名 from 辅助表
where 计数 > 1;

技术图片

 

 3)结合前两步,将“创建辅助表”的步骤放入子查询

select 姓名 from
(
 select 姓名, count(姓名) as 计数
 from 学生表
 group by 姓名
) as 辅助表
where 计数 > 1;

结果:

技术图片

 

 

  • 方法二

这时候有的同学可能会想,为什么要这么麻烦创建一个子查询,不能用这个语句(将count放到where字句中)直接得出答案吗?

select 姓名
from 学生表
group by 姓名
where count(姓名) > 1;

如果我们运行下这个sql语句,会报下面的错误,问题出在哪里呢?

技术图片

如果要对分组查询的结果进行筛选,可以使用having子句。所以,这道题的最优方法如下:

select 姓名
from 学生表
group by 姓名
having count(姓名) > 1;

【本题考点】

1)考察思路,有两种解题方法,但是使用having语句的方法更高效。

2)考察对having语句的掌握,很多人会把聚合函数写到where子句中。

3)熟记SQL子句的书写顺序和运行顺序

【举一反三】

本题也可以拓展为:找出重复出现n次的数据。只需要改变having语句中的条件即可:

select 列名
from 表名
group by 列名
having count(列名) > n;

 

如何查找重复数据?

标签:分组查询   div   from   having   ima   count   技术   表名   掌握   

原文地址:https://www.cnblogs.com/tracydzf/p/13568444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!