mysql删除多余重复_mysql 删除重复的多余的记录,只保留一条就可,按照网上写的有问题...

可以创建一个临时表(只存id),用来把原表的重复记录最小的id存储起来。然后delete from table where id not in (select * from tmp_table)

这样两个表都是只操作主键字段,这是最快的。

具体步骤如下:

create tmp_table (

id int unsigned not null primary key

)

然后

insert into tmp_table (select min(id) from bt_ask_to_cate_backup group by ask_id,cate)

最后

delete from bt_ask_to_cate_backup where id not in (select * from tmp_table)

但是如果bt_ask_to_cate_backup表数据量太大,你其实还可以按下面方法处理:

首先,在表上给ask_id,cate这两个字段建联合索引,索引创建时间会很长,不过后面的操作时间大大缩短了,整体来看,时间是缩减不少的。

select min(id) from bt_ask_to_cate_backup group by ask_id,cate having count(id)>1

这样把在ask_id,cate这两个字段上重复的记录最小id找到了,下面用最小id找到对应的ask_id,cate的字段值(用foreach遍历查找),然后循环执行sql语句 delete from bt_ask_to_cate_backup where ask_id=xxx and cate=xxx and id<>xxx;

一次循环就可以把所以重复的数据清除掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值