前言

本文主要给大家介绍了关于MySQL中查询、删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍:

查找所有重复标题的记录:

select title,count(*) as count from user_table group by title having count>1;

SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC

一、查找重复记录

1、查找全部重复记录

SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC

2、过滤重复记录(只显示一条)

Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title)

注:此处显示ID最大一条记录

二、删除重复记录

1、删除全部重复记录(慎用)

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

2、保留一条(这个应该是大多数人所需要的 _)

Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)

注:此处保留ID最大一条记录

三、举例

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

3、查找表中多余的重复记录(多个字段)

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

四、补充

有两个以上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

1、对于第一种重复,比较容易解决,使用

select distinct * from tableName

就可以得到无重复记录的结果集。

如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

select distinct * into #Tmp from tableName

drop table tableName

select * into tableName from #Tmp

drop table #Tmp

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

select identity(int,1,1) as autoID, * into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select * from #Tmp where autoID in(select autoID from #tmp2)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助

mysql删除重复的判断_MySQL中查询、删除重复记录一共有多少种方法?相关推荐

  1. java中批次号_在一个批次中插入多笔记录的几种方法

    插入数据库方法很多,下面Insus.NET列举几种方法,看看你常用的是哪一种: 创建一张表: CREATE TABLE [dbo].[Network_Info] ( [ID] INT NOT NULL ...

  2. 从19本书中选取五本,并且要求这五本互相不相邻,一共有多少种方法?

    题目: 从19本书中选取五本,并且要求这五本互相不相邻,一共有多少种方法? 解决方案一:挡板问题--插空法 假设当前在书架上已经放好14本书,那么只需要再把剩下五本书插入这些空中即可. 14本书有15 ...

  3. mysql删除重复文章标题_MySQL中查询、删除重复记录的方法大全

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: 一.查找重复记录 1.查找全部重复记录 2.过滤重复记录( ...

  4. mysql去掉两个最高分_MySQL中查询、删除重复记录的方法大全

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as coun ...

  5. 设置mysql字段不能自增_MySQL中不能创建自增字段的解决方法

    原因分析: 引起MySQL不能创建自动增加的字段的原因是在MySQL5.0.2版本中的The Server SQL Mode 中新加了几种 sql_mode,并且在sql的my.ini文件中的sql- ...

  6. 判断字符串中是否包含指定字符的N种方法对比

    方法一 var str ="abc"; if(str.indexOf("bc")!=-1){// !=-1含有 ==-1不含有 } 方法二 var str =& ...

  7. MySQL中查询字段为空或者为null方法

    MySQL中查询字段为空或者为null方法 判断为null select * from table where column is null; 不为null: select * from table ...

  8. js 判断数组中是否有重复值两种方法

    判断数组中是否有重复的值,重复则提示优先级重复 第一种方法 推荐 // 以数组值为键,持续向一个对象里面加值,// 如果在加值之前就发现这个属性在对象中已经存在,那么他就是重复的 function i ...

  9. (C语言)判断数组中是否有重复值

    给一个数组,判断数组里面是否有重复的数,如果有返回1,如果没有返回0 现在写的是蛮力法,时间效率为O(n^2); 目前想到的更好的办法是先排序,然后比较相邻元素是否有相等的.这个的时间效率就取决于排序 ...

最新文章

  1. Windows phone 应用开发[12]-Pex 构建自动化白盒测试[下]
  2. 8个你应该了解的正则表达式
  3. Swif语法基础 要点归纳(一)
  4. Android给TextView和EditText等控件设置透明背景、圆角边框
  5. superset 时区问题Timestamp subtraction must have the same timezones or no timezones
  6. eclipse 创建 maven web 项目教程
  7. NET 提供了执行异步操作的三种模式
  8. [Open Source]DrawKit - A cocoa framework for drawing
  9. uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结
  10. 计算机03年word做母亲节贺卡,word2007怎样制作电子母亲节贺卡
  11. php ci CodeIgniter框架图片缩略图处理类优化 缩放到固定大小
  12. Java基础9----运算符2(关系,逻辑运算符)
  13. 【ROM制作工具】如何三分钟学会制作手机线刷包?一键制作线刷包详细教程
  14. Python每日一练-----整数转罗马数字
  15. 蓝桥杯STM32G431——RTC实时时钟
  16. 数据结构 笔记:图的遍历(DFS)
  17. 尚硅谷JavaScript基础实战丨JS入门到精通全套完整版 P15
  18. 华为matebook重装win11系统后,蓝牙失效无法使用,重新安装蓝牙驱动
  19. mmdvm 接收_派之星和MMDVM热点常见问题
  20. 什么是流量裂变系统?如何设计流量裂变机制?

热门文章

  1. Android5.1修改以太网MAC地址(SElinux)
  2. Android关于AndroidManifest.xml详细分析
  3. 不同工作组能访问吗_“辣椒”的辣味从哪里来?有方法能测量不同辣椒的辣度吗?...
  4. 关于Angular中使用HTML的select和option标签的一些问题
  5. [雪峰磁针石博客]2018最佳12个开源或免费web服务器和客户端性能测试工具
  6. c++基础_特殊回文数
  7. Lambda表达式常用代码示例
  8. “双十一”即来 电商如何开启安全大战?
  9. STM8不用手动复位进入自带Bootloader方法(串口下载)
  10. Exchange server 2003迁移到2010之升级默认地址簿及地址策略