mysql去重之实战总结

一、有主键去重#

a、单字段重复

查询重复记录(一条)

Copy Highlighter-hljs
select aid from ab group by aid having count(*)>1

查询重复记录(全部)

Copy Highlighter-hljs
select * from ab t where t.aid in(select aid from ab group by aid having count(*)>1);

删除重复记录保留一条

Copy Highlighter-hljs
delete from ab where aid in(   select aid from ab group by aid having count(*)>1 )and id not in(   select max(id)as id from ab group by aid having count(*)>1 )

刚开始想到这个sql,结果

于是经过查资料,sql整改

Copy Highlighter-hljs
delete from ab where aid in( select t.aid from( select aid from ab group by aid having count(*)>1 ) t )and id not in( select t.id from( select max(id) as id from ab group by aid having count(*)>1 ) t )

去重成功!

b、多字段重复

table ab

查询重复记录(一条)

Copy Highlighter-hljs
select aid,bid from ab group by aid,bid having count(*)>1

查询重复记录(全部)

Copy Highlighter-hljs
select * from ab t where(t.aid,t.bid)in(select aid,bid from ab group by aid,bid having count(*)>1);

删除重复记录保留一条

Copy Highlighter-hljs
delete from ab where (aid,bid) in ( select t.aid,t.bid from ( select aid,bid from ab group by aid,bid having count(*)>1 ) t ) and id not in ( select t.id from ( select max(id) as id from ab group by aid,bid having count(*)>1 ) t )

二、无主键去重#

单字段、多字段

table ab

删除重复记录保留一条

Copy Highlighter-hljs
--建临时表插入去重数据 create table ab_temp (select * from ab group by aid,bid having count(*)>1); --删除重复数据 delete from ab where (aid,bid) in ( select t.aid,t.bid from ( select aid,bid from ab group by aid,bid having count(*)>1 ) t ); --插入去重数据 insert into ab select * from ab_temp; --删除临时表 drop table ab_temp;

posted @   caibaotimes  阅读(215)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示
CONTENTS