有一个表里面有id
,mid
两个字段,id
是主键,想删除重复的mid
。分两步完成:
- 创建一个表,建立一个
tmp
表记录有哪些mid
是重复的,以及重复的mid
中,最小的id
(稍后我们在重复的mid
中将保留这个最小的id
)
CREATE TABLE tmp (
SELECT
mid,
MIN(id) AS id
FROM
comments
GROUP BY
mid
HAVING
COUNT(mid) > 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