MySQL删除表中重复记录

有一个表里面有id,mid两个字段,id是主键,想删除重复的mid。分两步完成:

  1. 创建一个表,建立一个tmp表记录有哪些mid是重复的,以及重复的mid中,最小的id(稍后我们在重复的mid中将保留这个最小的id
CREATE TABLE tmp (
    SELECT
        mid,
        MIN(id) AS id       
    FROM
        comments
    GROUP BY
        mid
    HAVING
        COUNT(mid) > 1
)
  1. 进行删除操作
DELETE a.*
FROM
    comments a,
    tmp b
WHERE
    a.mid = b.mid
AND a.id != b.id

不建立tmp表似乎也可以,但是需要将临时表重命名一下,否则会报这个错误

[Err] 1093 - You can't specify target table 'a' for update in FROM clause
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,839评论 0 11
  • 系统层面(基本不用动,看了下,买的云服务器基本都已经优化过了) 内核相关参数(/etc/sysctl.conf) ...
    神奇大叶子阅读 2,057评论 0 4
  • 写在前面的 一颗伤心死掉的橘子树 不拘一世之利以为己私分,不以王天下为已处显。显则明。万物一府,死生同状。 扯淡结...
    d4d98020ef88阅读 5,752评论 10 17
  • 今天,老师让我们分组有八排就分了八个组,我们那排的组长是李佳阳,我很喜欢我的组长,他很有爱心,也很爱帮助人,...
    我自己喜欢的事活着阅读 193评论 0 0