SQL - 如何按上次输入的值删除重复的行?

Jan*_*jti 7 sql sql-server duplicate-removal

我从这个链接有这个代码:如何删除重复的行?

 ;WITH cte
 AS (SELECT ROW_NUMBER() OVER (PARTITION BY person_id, date_work, hours
                                   ORDER BY ( SELECT 0)) RN
     FROM   work_hours)
 DELETE FROM cte
 WHERE  RN > 1
Run Code Online (Sandbox Code Playgroud)

是否可以删除第一个输入的重复行或我应该有一个额外的列date_of_entry?我想这样做,如果我输入相同的date_work和不同的小时,PARTITION BY person_id, date_work它删除随机重复.

如果不可能,我怎样才能删除更高时间的重复项?

Mik*_*son 6

order by hours desc

;WITH cte
 AS (SELECT ROW_NUMBER() OVER (PARTITION BY person_id, date_work
                                   ORDER BY hours DESC) RN
     FROM   work_hours)
 DELETE FROM cte
 WHERE  RN > 1
Run Code Online (Sandbox Code Playgroud)

  • **`ORDER BY hours desc`**是可以接受的答案,它删除了较少的小时数的重复列.谢谢你的答复 (2认同)