mysql 删除重复记录

mysql 删除重复记录

BUG集散地

2019-09-29 08:35 阅读 22 喜欢 0 mysql 删除重复记录

这不是之前做了一个磁力小站么.. 发现之前好多记录都是重复的(不要问我怎么发现的),就删除下,感觉不难,但总是写不对.. 这里纯粹记下sql.

查询重复记录

select infohash from demo_magnet group by infohash having count(1) > 1;

删除重复记录(所有)

//请注意:这里是全部删除,不会保留哈,一定要看仔细了... 
delete from demo_magnet where infohash in (
    select infohash from (
        select infohash from demo_magnet group by infohash having count(1) > 1
    ) t
) ;
//注意哈,要带t(作为一个表)

保留一条记录

delete from demo_magnet where infohash in (
    select infohash from (
        select infohash from demo_magnet group by infohash having count(1) > 1
    ) t
) 
and id not in (
    select dt.minid from (
        select min(id) as minid from demo_magnet group by infohash having count(1) > 1
    ) dt
)

这里我的ID 是自增的可以使用这个。如果没有ID可以来判定怎么办?

用 _rowid 和 oracle 的 rowid 类似

delete from demo_magnet where infohash in (
    select infohash from (
        select infohash from demo_magnet group by infohash having count(1) > 1
    ) t
) 
and _rowid not in (
    select dt.minid from (
        select min(_rowid) as minid from demo_magnet group by infohash having count(1) > 1
    ) dt
)

以上。

转载请注明出处: https://chrunlee.cn/article/mysql-delete-repeat-record.html


如果对你有用的话,请赏给作者一个馒头吧 ...或帮点下页面底部的广告,感谢!!

赞赏支持
提交评论
评论信息(请文明评论)
暂无评论,快来快来写想法...
推荐
最近入手一台小主机,把自己剩余的硬盘都加上去了,想着做个私有云..使用了owncloud,类似的文章很多,不过各有各的坑,当然我这个也肯定有坑,主要是各自的环境还不一样。
傅里叶啊傅里叶 要掐死你啦..
仅做记录。
windows 环境下有时候会使用curl工具来测试一些接口或页面,这里简单记录下在windows环境下的安装步骤。
在写前端页面的时候,反复操作的是切换,写完代码,切换到浏览器,然后刷新,查看效果,不合适,然后再切换回编辑器,然后修改,这样反复操作。livereload 释放了双手,自动刷新(尤其是双屏的同学特别友好)
记录下部署php项目的时候的经过,查了很多资料,最后才定出的这个,中间些许问题可能已经记不清楚了,趁着时间步长,赶紧回忆一下。
使用mysql来进行更新大量数据的时候,报错:The total number of locks exceeds the lock table size 。 原因是全局设置的 innodb_buffer_pool_size 为 8M ,调整大一些就可以了。
对于视频,音频等的处理,使用ffmpeg还是很方便的,但是由于命令繁多,又不好记忆,这里整理下个人常用的几个命令,后续方便查找。