删除保留最小ID的重复项

时间:2014-01-15 09:49:13

标签: sql oracle11g duplicates duplicate-removal

我有一个人员表,其中重复的人插入了不同的身份证。我想删除名称重复的人,只保留具有最小ID的人。 对于e.G,应保留具有ID 18398的Absalon记录,并删除所有其他重复记录。

enter image description here

2 个答案:

答案 0 :(得分:13)

DELETE FROM persons WHERE id NOT IN (SELECT MIN(id) FROM persons GROUP BY name)

答案 1 :(得分:0)

WITH duplicatable As
( SELECT *, ROW_NUMBER() OVER( PARTITION BY name, ORDER BY id ASC ) as row_number FROM table_name
)
SELECT * FROM duplicatable WHERE row_number > 1