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

分析思路

1.看到“找重复”的关键字眼,首先要用分组函数(group by),再用聚合函数中的计数函数count()给姓名列计数。

2. 分组汇总后,生成了一个如下的表。从这个表里选出计数大于1的姓名,就是重复的姓名;

具体方法

方法一:

第一步:创建一个辅助表,将姓名列进行行分组汇总;

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

第二步:选出辅助表中计数大于1的姓名;

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

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

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

方法二:

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

执行此语句会发现报错了,此时,查询相关资料发现,where子句无法与聚合函数一起使用,因为where子句的运行顺序排在第二,运行到where时,表还没有被分组;

如果要对分组查询的结果进行筛选,可以使用having子句:

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

拓展

找出重复出现n次的数据。只需要改变having语句中的条件即可:

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

如何利用sql查找表中的重复数据?相关推荐

  1. 利用SQL查找表中的质数(prime number)和完全数(perfect number)以及几个有趣的SQL语句...

    之前在某次interview中被老外问到如何用SQL找出列上的质数和完全数的问题:我当时已经多年没有写过这种考算法和SQL技巧(纯粹的技巧)的语句了,乍遇此问题倒是有些棘手.现在录以记之,供人参考. ...

  2. day1:如何利用SQL查找表中数据类型

    一起积累本地数据库各种小代码吧~ 1. 查看表的数据类型 无论是MySQL还是PostgreSQL,本地数据库均可使用以下代码查看数据库中每张表的数据类型. select column_name,da ...

  3. 怎么有效地查询MySQL表中的重复数据

    在MySQL数据库中,偶尔会遇到需要查找表中出现的重复数据的情况.这种情况下,我们可以通过编写一些SQL查询语句轻松地找到并处理这些重复行.本文将介绍一些常见的方法和技巧,帮助你有效地查询MySQL表 ...

  4. MSSQL如何在没有主键的表中删除重复数据

    MSSQL如何在没有主键的表中删除重复数据 原文:MSSQL如何在没有主键的表中删除重复数据 为了对重复数据进行实验,下面建一个设计不太好(没有主键)表并插入了一些重复数据: create datab ...

  5. Oracle删除表中的重复数据

    Oracle数据库删除表中的重复数据,只保留其中的一条,以两个字段为例,提供两种方法 ①.直接delete重复的数据 delete from table_name t1 where (t1.col1, ...

  6. SQL删除表中的重复记录只保留其中一条,最简单的方法:ROW_NUMBER()

    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?. 要求:删除表中多余的重复记录,且保留 id 最小的那一条记录. CREATE TABLE #temp_data( id BI ...

  7. 【WPS表格】标记出表中的重复数据,并新建工作表

    利用[数据对比]功能,标记出单元表中的重复数据并新建工作表: 注意:这是WPS的会员功能

  8. 如何删除SQL Server表中的重复行

    若在你的MS Sql Server数据库表中,有重复的多行,你可能想去删除这些重复的记录. T_SQL Row_Number()函数能帮助sql开发者去解决这个sql的问题. 1.创建TUser表: ...

  9. MYSQL 删除表中的重复数据

    test表中的原始数据: test表中name字段信息有重复,想进行过滤删除重复数据 删除重复数据之后的预期结果(不考虑id): 方法一: 用 create ......select......gro ...

最新文章

  1. 实现隐藏窗体而非关闭的方法
  2. Windows下Python 3.6 + VS2017 + Anaconda 解决Unable to find vcvarsall.bat问题
  3. 如何在 20 分钟内给你的 K8s PaaS 上线一个新功能?
  4. linux操作系统之线程
  5. Apache Nutch 1.3 学习笔记目录
  6. Spring Batch 批量处理策略
  7. linux调整网页视频声音,网络学员面试常见问题请你修改一下LINUX的视频驱动和声音.DOC...
  8. 协同过滤之ALS-WR算法
  9. javascript的对象内容对比
  10. 我的世界光影mod怎么用_《我的世界》RTX beta 版视频体验:仿佛打破了次元壁
  11. java 32进制10进制互转
  12. VS2012 打开项目后无法编辑
  13. 「小狼毫」-- rimeime 中州韵输入法引擎
  14. python爬取wifi密码完整代码_WIFIpass – Python获取本机保存的所有WIFI密码(附源代码)...
  15. 利用矩阵快速幂求解斐波那契数列
  16. Mac电脑升级13系统后,git clone 代码报错,mac升级后git ssh用不了
  17. 调查问卷的反向计分题数据如何录入?
  18. 微软 无线键盘 linux,在Deepin系统中连接微软人体工学键盘蓝牙失效的解决方法...
  19. 网上在线培训平台哪家好?
  20. git提交代码设置某些文件不可上传

热门文章

  1. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java宠物寄养管理系统41n70
  2. 送书啦~《Android App开发进阶与项目实战》
  3. 十大经典排序算法—桶排序
  4. 本人写的一个ARP防火墙源代码奉献(2)
  5. 戴尔r310服务器装系统,联想天逸310S台式机装win10系统及bios设置教程
  6. Audacious - GNOME的’千千静听’
  7. 霍金去世前,曾向China发出严正警告!!!原因是...
  8. 表单元素input type=”hidden”的作用
  9. 送给高三毕业学生:如何选专业
  10. win7计算机基础网络考试题库,Win7计算机应用基础考试内容