MySQL 数据库删除表中重复数据

采集数据的时候,由于先期对页面结构的分析不完善,导致采漏了一部分数据。完善代码之后重新运行 Scrapy,又采集了一些重复的数据,搜了下删除重复数据的方法。

N.B. 删除数据表的重复数据时,请先备份数据表。

方法一

# 保留主键 ID 较小的那条记录
DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name

# 保留主键 ID 较大的那条记录
DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name

 

方法二

复制代码
# 保留主键 ID 较大的那条记录
DELETE FROM NAMES
 WHERE id NOT IN (SELECT * 
                    FROM (SELECT MIN(n.id)
                            FROM NAMES n
                        GROUP BY n.name) x)

# 保留主键 ID 较小的那条记录
DELETE FROM NAMES
 WHERE id NOT IN (SELECT * 
                    FROM (SELECT MAX(n.id)
                            FROM NAMES n
                        GROUP BY n.name) x)
复制代码

 

P.S. 当数据表的数据量较多时,建议使用方法二,大大节省时间。 

 

参考链接:

  1. Delete all Duplicate Rows except for One in MySQL? [duplicate]
  2. sql - Remove duplicate rows in MySQL - Stack Overflow

 

posted @   imzhi  阅读(1436)  评论(0)    收藏  举报
编辑推荐:
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 领域驱动的事实与谬误 一 DDD 与 MVC
· SQL Server 2025 中的改进
· 当数据爆炸遇上SQL Server:优化策略全链路解析
· 记录一次线上问题排查:JDK序列化问题
阅读排行:
· 个人对Debian桌面系统的简单使用分享
· 凯亚利用直播推流技术请大家看电影
· 待到山花烂漫时:鸿蒙开发者的个人感悟
· Socket实践:使用云服务器当代理连接公司内网,简单实现跨局域网调用部署在公司局域网里的api接口
· 【SQL周周练】一句 SQL 如何帮助 5 个人买到电影院最好的座位?
点击右上角即可分享
微信分享提示