如何使用MySQL删除重复的记录并保留一条唯一的记录

假设某个表的数据如下:

 

source_id是有重复的,我们想要的结果是:

 

如何实现呢?很简单,一条SQL搞定:

DELETE FROM source

WHERE id NOT IN (

  SELECT * FROM (

    SELECT MIN(id)

    FROM source

    GROUP BY source_id

) AS temp

);

  

这段SQL的含义:

子查询部分:

SELECT MIN(id)

FROM source

GROUP BY source_id


将source表中所有source_id分组,并查询出分组中id最小的一个,比如id为1、2的source_id重复了,那么这个子查询将查询出id为1的记录。

所以子查询里查询的结果id为:1、3、5.

外层的delete将会删除id不是1、3、5的,这样就可以将重复项删除,并保留分组中唯一的一条记录。

这篇分享文章就到这里啦!如果你对文章内容有疑问或想要深入讨论,欢迎在评论区留言,我会尽力回答。同时,如果你觉得这篇文章对你有帮助,不妨点个赞并分享给其他同学,让更多人受益。

想要了解更多相关知识,可以查看我以往的文章,其中有许多精彩内容。记得关注我,获取及时更新,我们可以一起学习、讨论技术,共同进步。

感谢你的阅读与支持,期待在未来的文章中与你再次相遇!

我的微信公众号:【xdub】,欢迎大家订阅,我会同步文章到公众号上。

posted @ 2024-05-31 09:44  一方_self  阅读(55)  评论(0编辑  收藏  举报