美文网首页
MySQL删除表中重复记录

MySQL删除表中重复记录

作者: 兮嘉 | 来源:发表于2016-09-05 17:38 被阅读38次

    有一个表里面有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
    

    相关文章

      网友评论

          本文标题:MySQL删除表中重复记录

          本文链接:https://www.haomeiwen.com/subject/fsirettx.html