mysql 删除重复数据

mysql 删除重复的数据有很多种方式。

有一条sql语句就搞定的,但是mysql不支持delete from table where id  in ( ............). 

但是mysql 有一种join的写法,但是比较怪异。

DELETE t1 FROM test_an AS t1,(
SELECT MIN(order_id) AS order_id FROM test_an GROUP BY order_no HAVING COUNT(1)>1
) AS t2 WHERE t1.order_id=t2.order_id;

具体相关描述可以见mysql官网。

如果删除的数据量非常大,不建议采用这种方法。

可以分步骤建立中间表。

第一步备份一张表

create table tmp_users like users; (create table like  和 create table select 的区别 ,create table like 复制的表结构包含索引 而 create table select 不包含索引,没有索引对业务影响很大,这个要特别留意的)


第二步把需要保留数据保存下来

通过类似这样的sql

SELECT MIN(order_id) AS order_id FROM test_an GROUP BY order_no HAVING COUNT(1)>1

第三步删除原表,把中间表名rename




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值