MySQL-删除重复数据

在实际应用中,遇到一个这样的问题,MySQL中存储的数据为资讯类数据,在页面展示时会出现多个平台的新闻报导相同的内容,导致页面会出现重复数据。因为数据是每天定期更新,所以最快捷有效的方式是在更新完数据后增加一个去重操作。

实现逻辑如下:

写一个定时删除的脚本,每天定时执行,通过对数据中title进行聚合去重:将数据按title分组,取id最小的数据进行记录,然后将id不在该列表的数据删除。

代码如下:

sql 复制代码
DELETE FROM worldhm_info_major_news
WHERE id NOT IN (
    SELECT MIN(id) min_id
			FROM worldhm_info_major_news
			WHERE pub_date > "2023-09-24 00:00:00"
			GROUP BY title
) AND pub_date > "2023-09-24 00:00:00";

运行上述代码时报错:

该错误大致意思为不能依据某字段值做判断再来更新某字段的值。

解决方法

解决方法:select 的结果再通过一个中间表 select 多一次,就可以避免这个错误

sql 复制代码
DELETE FROM worldhm_info_major_news
WHERE id NOT IN (
select min_id from (
    SELECT MIN(id) min_id
    FROM worldhm_info_major_news
	WHERE pub_date > "2023-09-24 00:00:00"
    GROUP BY title) a
) AND pub_date > "2023-09-24 00:00:00";
相关推荐
IT教程资源D6 分钟前
[N_101]基于springboot,vue企业网盘系统
mysql·vue·前后端分离·springboot网盘
我可以将你更新哟9 分钟前
【爬虫】爬取斗罗大陆漫画,面向对象封装(存入数据库)
数据库·爬虫·python
忙里偷闲学python9 分钟前
mysql
linux·数据库·mysql·oracle
byzh_rc9 分钟前
[算法设计与分析-从入门到入土] 递归
数据库·人工智能·算法·机器学习·支持向量机
学Linux的语莫18 分钟前
Milvus向量数据库的基础连接操作
数据库·milvus
小智RE0-走在路上36 分钟前
Python学习笔记(13) --Mysql,Python关联数据库
数据库·python·学习
x66ccff1 小时前
Claude Code 安装方法
android·java·数据库
嘟嘟w1 小时前
MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
数据库·mysql
四谎真好看1 小时前
MySQL 学习笔记(进阶篇3)
笔记·学习·mysql·学习笔记
星光一影1 小时前
智慧停车与充电一体化管理平台:打造城市出行新生态
mysql·vue·能源·springboot·uniapp