也许,我误解了问题,但是您的查询(即使在Oracle中)也无法实现您想要的目标:delete from my_table where rowid not in (select max(rowid) from my_table group by field1,field2)相当于MySQLSELECT @rowid:=max(rowid) from my_table;DELETE FROM my_table where rowid != @rowid;这将清除除最后一行以外的所有行。要执行一次数据清理(删除重复记录),您可以执行以下操作:CREATE TABLE my_table2 SELECT distinct f1, f2, f3, etc from my_table;DROP TABLE my_table;ALTER TABLE my_table2 RENAME my_table;然后通过ALTER TABLE添加任何必要的列和键。上面的代码可能需要删除您可能拥有的任何外键。