欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-07 10:41:42
...

业务场景


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

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

【MySQL】常见的业务处理-删除重复数据
上图是商品评论表

查看是否存在重复评论


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

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;