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";
相关推荐
川trans1 分钟前
基于 Docker & K8s 的 MySQL 容器化部署与应用关联实践
mysql·docker·kubernetes
5G丶5 分钟前
ThinkPHP 集群部署完整指南
数据库·php
刘~浪地球29 分钟前
数据库与缓存--MySQL 高可用架构设计
数据库·mysql·缓存
知识分享小能手32 分钟前
MongoDB入门学习教程,从入门到精通,MongoDB的了解应用程序的动态(18)
数据库·学习·mongodb
oradh33 分钟前
Oracle数据类型概述(一)
数据库·oracle·oracle基础·oracle入门基础·oracle数据类型
小兜全糖(xdqt)1 小时前
Ubuntu22.04安装最新版本redis
数据库·redis·缓存
运维老郭1 小时前
MySQL 主从延迟根因诊断法:从现象到本质的全链路排查指南
运维·mysql
风曦Kisaki1 小时前
Linux服务Day03:自定义YUM仓库、网络YUM仓库(HTTP/FTP)、MariaDB数据库基础操作
linux·网络·数据库
weixin_704266051 小时前
redis 的集群
java·数据库·redis
正在走向自律1 小时前
企业级数据库行标识技术深度解析:OID与ROWID的双轨架构实战
数据库·oracle·oid·rowid