MySQL删除表中重复记录

2016-09-05  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读