这里写自定义目录标题

  • 1 重复字段
  • 2 查询全部重复的数据
  • 3 删除全部重复试题
  • 4 查询表中多余重复试题(根据 depno 来判断,除了 rowid 最小的一个)
    • 4.1 第一种方法
    • 4.2 第二种方法
    • 4.3 第三种方法
  • 5 删除表中多余重复试题并且只留 1 条
    • 5.1 第一种方法
    • 5.2 第二种方法
    • 5.3 第三种方法
  • 6 多个字段的操作
  • 7 总结

1 重复字段

Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1

count (*) 与 count(列名)的区别:

count (*) 将返回表格中所有存在的行的总数包括值为 null 的行,然而 count (列名) 将返回表格中除去 null
以外的所有行的总数 (有默认值的列也会被计入)

2 查询全部重复的数据

Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)

3 删除全部重复试题

 DELETE FROM dept WHERE dname IN (select * from (SELECT dname FROM dept GROUP BY dname HAVING count(1) > 1) t)

4 查询表中多余重复试题(根据 depno 来判断,除了 rowid 最小的一个)

4.1 第一种方法

SELECT*
FROMdept
WHEREdname IN (SELECTdnameFROMdeptGROUP BYdnameHAVINGCOUNT(1) > 1)
AND deptno NOT IN (SELECTMIN(deptno)FROMdeptGROUP BYdnameHAVINGCOUNT(1) > 1
)

4.2 第二种方法

SELECT *
FROMdept
WHEREdeptno NOT IN (SELECTdt.minnoFROM(SELECTMIN(deptno) AS minnoFROMdeptGROUP BYdname) dt)

4.3 第三种方法

SELECT*
FROMtable_name AS ta
WHEREta.唯一键 <> ( SELECT max( tb.唯一键 ) FROM table_name AS tb WHERE ta.判断重复的列 = tb.判断重复的列 );

5 删除表中多余重复试题并且只留 1 条

5.1 第一种方法

DELETE
FROMdept
WHEREdname IN (SELECTt.dnameFROM(SELECTdnameFROMdeptGROUP BYdnameHAVINGcount(1) > 1) t)
AND deptno NOT IN (
SELECTdt.mindeptno
FROM(SELECTmin(deptno) AS mindeptnoFROMdeptGROUP BYdnameHAVINGcount(1) > 1) dt
)

5.2 第二种方法

DELETE
FROMdept
WHEREdeptno NOT IN (SELECTdt.minnoFROM(SELECTMIN(deptno) AS minnoFROMdeptGROUP BYdname) dt)

5.3 第三种方法

DELETE
FROMtable_name AS ta
WHEREta.唯一键 <> (
SELECTt.maxid
FROM( SELECT max( tb.唯一键 ) AS maxid FROM table_name AS tb WHERE ta.判断重复的列 = tb.判断重复的列 ) t );

6 多个字段的操作

单个字段的如果会了,多个字段也非常简单。就是将 group by 的字段增加为你想要的即可。
此处只写一个,其他方法请仿照一个字段的写即可。

DELETE
FROMdept
WHERE(dname, db_source) IN (SELECTt.dname,t.db_sourceFROM(SELECTdname,db_sourceFROMdeptGROUP BYdname,db_sourceHAVINGcount(1) > 1) t)
AND deptno NOT IN (SELECTdt.mindeptnoFROM(SELECTmin(deptno) AS mindeptnoFROMdeptGROUP BYdname,db_sourceHAVINGcount(1) > 1) dt
)

7 总结

其实上面的方法还有很多需要优化的地方,如果数据量太大的话,执行起来很慢,可以考虑加优化一下:

在经常查询的字段上加上索引

将 * 改为你需要查询出来的字段,不要全部查询出来

小表驱动大表用 IN,大表驱动小表用 EXISTS。IN 适合的情况是外表数据量小的情况,而不是外表数据大的情况,因为 IN 会遍历外表的全部数据,假设 a 表 100 条,b 表 10000 条那么遍历次数就是 100*10000 次,而 exists 则是执行 100 次去判断 a 表中的数据是否在 b 表中存在,它只执行了 a.length 次数。至于哪一个效率高是要看情况的,因为 in 是在内存中比较的,而 exists 则是进行数据库查询操作的

通过SQL 语句删除重复记录并且只保留一条记录相关推荐

  1. mysql删除重复数据只保留一条_mysql查找删除重复数据并只保留一条实例详解

    有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 ...

  2. php去除重复的数据保留一条,mysql查找删除重复数据并只保留一条实例详解

    有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 ...

  3. mysql数据库删除重复的数据只保留一条

    问题引入 假设一个场景,一张用户表,包含 3 个字段:id,identity_id,name. 现在身份证号 identity_id 和姓名 name 有很多重复的数据,需要删除多余数据只保留一条有效 ...

  4. SQL Server 删除重复记录,只保留一条记录

    原文地址:http://blog.csdn.net/eriato/article/details/17417303 有张表格之前没有设计关键字段的唯一约束,导致有时候执行插入操作时不小心执行了多次就出 ...

  5. mysql查找删除重复数据并只保留一条

    mysql表中,某一字段的值有很多重复数据,需要将这些重复的数据记录删除,只保留其中的一条数据即可,如何使用SQL语句来实现呢,本文章向大家介绍mysql如何查找删除重复数据,需要的朋友可以参考一下. ...

  6. mysql 删除重复数据只保留一条记录

    删除重复数据保留name中id最小的记录 delete from order_info where id not in (select id from (select min(id) as id fr ...

  7. 用SQL语句删除数据库重复数据,只保留一条有效数据

    在实际开发中,可能会遇到数据库多条数据重复了,此时我们需要删除重复数据,只保留一条有效数据,用SQL语句怎么实现呢,下面我们模拟一下: 1.准备重复数据: 2.过滤出存在重复数据的信息: SQL语句: ...

  8. 最简单的删除重复记录(只保留一条)的SQL方法

    首先,新建一张表用于示例说明: # 新建一张表A create table A( id varchar(5), name varchar(5), salary float);# 插入数据(包含要去除的 ...

  9. mysql删除重复记录并且只保留一条

    准备的测试表结构及数据 插入的数据中A,B,E存在重复数据,C没有重复记录 CREATE TABLE `tab` (   `id` int(11) NOT NULL AUTO_INCREMENT,   ...

最新文章

  1. 【OpenCV 4开发详解】两图像间的像素操作
  2. asp.net 调用vc dll_“双通道”独立通讯,稀有钛膜单元,击音运动果VC真无线耳机...
  3. shell中数值比较 字符串比较 文件判断 whle和for和until循环
  4. IE6 object expected
  5. Unity 协程Coroutine综合测试
  6. Python学习系列day5-python基础
  7. 什么是Intent? 转
  8. eclipse新建的maven项目没有dependencies_Maven中dependencies与dependencyManagement的区别
  9. 新模型SkipNet在ImageNet分类任务大放光彩!优化损失函数!
  10. IDEA配置码云Gitee的使用详解
  11. JavaScript+cesium 添加高德影像图和标注
  12. UVAlive3662 Another Minimum Spanning Tree 莫队算法
  13. 数据结构之C语言实现线性表
  14. Android框架揭秘-Android Service Framework
  15. 信息经济学与人生博弈
  16. error:LNK2005解决
  17. 1-10000内的素数c语言,输入1-10000的素数
  18. Teemo Attacking 题解
  19. android手机扩容软件,Android手机 6.0 + TF卡 扩容新选择
  20. 刘德华开抖音了,一键下载华仔所有无水印视频

热门文章

  1. 【Python爬虫】利用BeautifulSoup处理html/xml格式古文数据库(论语、老子、庄子、韩非子等)并用pandas将其转换成csv格式
  2. 波动溢出模型|GARCH、DCC、BEKK
  3. HTC HD2刷rom,radio方法
  4. 医用计算机app,大型医用设备题库
  5. 如何在网页中打开一个本地桌面程序
  6. 迈德威视工业相机SDK取图问题
  7. 【天善学院】自己动手,丰衣足食!Python3网络爬虫实战案例 附讲义与代码 6 A+所属分类:Python教程
  8. 广读精思:科学新闻那些事
  9. SQL篇-创建数据表
  10. 个人学习笔记(备份)