工作需求:删除一个表中,订单id和产品id都相同的重复数据。具体要求灵活应变,原理都一样。
本次项目使用的是MySQL,使用其他数据库需自行简单调整下。
1.首先查看是否含有重复的数据,使用分组实现。
select order_id,product_id,count(*)
from product_commit
group by order_id,product_id
having count(*)>1
2.备份表,以免删除错误(千万在测试环境验证后再去生产环境操作)。
create table bak_product_comment_181119
as
select * from product_comment;
或者
create table bak_product_comment_181119
like product_comment;//创建表结构
insert into bak_product_comment_181119
select * from product_comment;
3.执行删除sql语句,删除重复数据。
delete a
from product_comment a
join(
select order_id,product_id,min(comment_id) as comment_id
from product_comment
group by order_id,product_id
having count(*)>=2
) b
on a.order_id=b.order_id
and a.product_id=b.product_id
and a.comment_id > b.comment_id