MySQL之-查询/删除重复记录的方法大全详解
技术百科
黄舟
发布时间:2017-03-13
浏览: 次 查找所有重复标题的记录:
SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC
一、查找重复记录
1、查找全部重复记录
Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
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
# 所需要
# 比较容易
# 只显示
# 第一条
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Windows10系统怎么查看设备管理器_Win1
- Win11输入法切换快捷键怎么改_Windows
- MAC如何设置网卡MAC地址克隆_MAC终端修改物
- C#如何使用Channel C#通道实现异步通信
- Win11时间怎么同步到原子钟 Win11高精度时
- c++协程和线程的区别 c++异步编程模型对比【核
- Win11怎么关闭通知中心_Windows11系统
- Mac怎么安装软件_Mac安装dmg与pkg文件的
- 如何使用Golang实现容器安全扫描_Golang
- Windows10如何更改系统字体大小_Win10
- Linux如何使用Curl发送请求_Linux下A
- Python装饰器设计思路_功能增强机制说明【指导
- Python异步编程高级项目教程_asyncio协
- Win11搜索栏无法输入_解决Win11开始菜单搜
- Win10怎样卸载TeamViewer_Win10
- php485能和物联网模块通信吗_php485对接
- Windows蓝屏错误0x00000023怎么修复
- c++怎么实现高并发下的无锁队列_c++ std:
- Win10如何卸载微软拼音输入法 Win10只保留
- Python与MongoDB NoSQL开发实战_
- Win11如何更改任务栏颜色 Win11自定义任务
- c++中如何使用auto关键字_c++11类型推导
- Python与OpenAI接口集成实战_生成式AI
- Python函数缓存机制_lru_cache解析【
- Windows10电脑怎么设置文件权限_Win10
- 如何用正则与预处理结合精准拦截拼接式垃圾域名
- 如何在Golang中验证模块完整性_Golangg
- Python lxml的etree和Element
- 如何使用Golang处理网络超时错误_Golang
- Win11怎么设置应用分屏_Windows11贴靠
- Python代码测试策略_质量保障解析【教程】
- Win11怎么自动隐藏任务栏_Win11全屏显示设
- Bpmn 2.0的XML文件怎么画流程图
- Windows怎样关闭桌面弹窗广告_Windows
- 如何在Golang中实现服务熔断与限流_Golan
- Mac怎么查看活动监视器_理解Mac进程和资源占用
- Win11怎么解压RAR文件 Win11自带解压功
- 如何用列表一次性对 DataFrame 的指定列应
- 如何在Golang中理解指针比较_Golang地址
- php控制舵机角度怎么调_php发送pwm信号控制
- 如何用::实现单例模式_php静态方法与作用域操作
- c++的mutex和lock_guard如何使用
- Linux如何安装Golang环境_Linux下G
- Python列表推导式与字典推导式教程_简化代码高
- php嵌入式多设备通信怎么实现_php同时管理多个
- PHP怎么接收URL中的锚点参数_获取#后面参数值
- Win11怎么关闭透明效果_Windows11个性
- c++怎么用jemalloc c++替换默认内存分
- Win11任务栏怎么调到左边_Win11开始菜单居
- Win10怎么卸载鲁大师_Win10彻底卸载鲁大师

utoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
QQ客服