mysql 批量去重

       我之前建数据库时不太刻意去设置某一字段的内容唯一,总觉得应用端肯定会考量,事实上大部分应用端的确会卡这个问题,但当两个应用端同时上传或是其他问题时,总之,就是出现了重复数据,如果数据也就一两条的话,倒可以一条条删除,但是多了的话,就想着怎么样用语句迅速删除重复数据,这里就需要用到group by的功能了 。

       菜鸟教程上group by用法说明:GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。说白了,就是把你现有的数据分类,有重复的都算一类,我们以下面的例子来说明具体用法:

原数据库:

 先用group by 练习一下

单列练习:name那个字段就只剩两行 DD和ff了 ,也就是把name那一栏重复的名字去重了。

多列练习:group by name,age 相当于name和age同时相同的为一组,所以尽管id 1和3 的name一致,它也会认为不一样。

以上只是说明group by的用法,下面去重,我们以去name的重复为例

1. 获取分组中各组的最大ID max(id),如果是需要保留最先一笔的话,就用最小ID min(id)。

从上图看,id 2和4就是我们需要保留的行,需要删除其他的 ,这里用到NOT IN 。

2. 获取需要删除的那几行 id。

3-error. 删除第2步找到的那几行id,直接删除会报错 :意思就是你不能对同一个表格既选择又更新 ,所以需要创建一个临时表作为缓存。

3-OK: 建立临时表。

4. follow 第二步 ,获取需要删除的id

5. 可以删除啦

让我们再看一下那个表,搞定了,多组的以此类推 。小伙伴们可以自己尝试看看。

       这篇文章只能算半原创,我是看了网上很多写法,最终选择了这一种我可以理解的,另外加上了group by的说明,其实以前也看过用法说明,但刚学的时候并没用到,所以只是跟着例子练习了一下,导致很久时间过去就又忘记了,知识最终都归于应用,只有到自己用到了才会发现,哦,原来是这样子用的呀,所以特别整理出来一份留下记录 。有的小伙伴可能觉得我比较懒,都没有把指令单独贴出来,但我觉得,自己尝试key in看看,会更能加深印象的哈 。

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值