【MySQL】常见的业务处理-删除重复数据

本文介绍了一种从数据库中删除重复的商品评论数据的方法,确保每个订单每个商品只保留最早的评论记录。通过SQL查询来查找并备份原始数据,在此基础上进行数据清理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务场景


日常工作中我们经常会遇到这样的场景 删除数据库中某个表中重复的数据 。现在以一个案例驱动。

需求:删除评论表中同一订单同一商品的重复评论,只保留最早的一条。

上图是商品评论表

查看是否存在重复评论


查看是否存在对于一订单同一商品存在重复评论

SELECT order_id, product_id, COUNT(*) 
		FROM product_comment 
	GROUP BY order_id, product_id 
	HAVING COUNT(*)>1;


备份product_comment表

-- 使用LIKE操作完整复制product_comment表的建表语句
CREATE TABLE bak_product_comment_180110 
	LIKE  product_comment;

-- 插入原表的数据
INSERT INTO bak_product_comment_180110 
	SELECT * FROM product_comment;

删除同一订单的重复评论

DELETE a FROM product_comment AS a JOIN (
	SELECT order_id, product_id, MIN(comment_id) 
		FROM product_comment GROUP BY order_id, product_id HAVING COUNT(*)>1
) AS b ON a.order_id=b.order_id AND a.product_id=b.product_id AND a.comment_id>b.comment_id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值