有些MySQL 数据表中可能存在重复的记录,形式如下表
id | value |
1 | A |
2 | B |
3 | B |
如果想删除多余的value,又想只删掉ID较大的项,可以用如下办法:
DELETE FROM your_table
WHERE id IN
( SELECT O.your_table FROM
( SELECT id FROM your_table
WHERE
-- 第一个条件是 value 计数大于1
value IN
( SELECT value FROM your_table
GROUP BY value
HAVING COUNT(value) > 1
)
-- 第二个条件是 id 不是最小的那个
AND id NOT IN
( SELECT MIN(id) FROM your_table
GROUP BY value
)
) as O
);
另外多说一句,删掉的id即使自增也不会补上,而是会接着被删掉的id继续,如果想修改,需要使用ALTER语句