MySQL 大批量插入,过滤掉重复数据方式

MySQL 大批量插入,过滤掉重复数据方式

1、把重复的数据全部删除

2、把重复的数据中,只留一条,其他相同数据删除

————————————————————————————————

1、把重复的数据全部删除

1.1、首先查出来重复的name,根据分组cout来查询

SELECT name from `user` GROUP BY `name` HAVING COUNT(1) > 1

1.1、这些重复的行数据删除

DELETE FROM `user` WHERE `name` IN (SELECT name from `user` GROUP BY `name` HAVING COUNT(1) > 1)

ERROR:You can't specify target table 'user' for update in FROM clause
这是因为又更新又查询,mysql不支持,必须得将后面查询单独作为中间表,再去查一遍即可
正确的SQL
DELETE FROM `user` WHERE `name` IN (SELECT * from (SELECT name from `user` GROUP BY `name` HAVING COUNT(1) > 1) a)

2、把重复的数据中,只留一条,其他相同数据删除

2.1根据name进行分组,取出每个分组name中最小的Id

SELECT MIN(id) from `user` GROUP BY `name`

2.2保留以上SQL的数据,其他的数据就是重复的数据,重复数据查询

SELECT * FROM `user` WHERE id NOT IN (SELECT MIN(id) from `user` GROUP BY `name`)

2.3删除重复数据

DELETE FROM `user` WHERE id IN (SELECT * FROM (SELECT id FROM `user` WHERE id NOT IN (SELECT MIN(id) from `user` GROUP BY `name`)) a)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值