MySQL下删除重复记录只保留一条数据

来源:互联网 发布:东芝181软件安装 编辑:程序博客网 时间:2024/03/28 17:06

对于Oracle来讲,可以用rowid去删除,保留最大或最小,如下:

DELETE from tablename WHERE (id) IN ( SELECT id FROM tablename GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM tablename GROUP BY id HAVING COUNT(*) > 1);

但是在MySQL中,上面的语句并不能使用,会报 for update的错,解决方法为 in 语句后面的查询结果要加封装

原因:mysql在同一个语句中不能先select一个表中的某些值,再update这个表
但是在Oracle 中无影响

原创粉丝点击