如何在SQL中按行号删除

Tim*_*cox 7 ssms sql-delete

我需要从行号475删除到948,因为它们是1-474行的重复。我想这可能与之接近,或者还有更多呢?

DELETE FROM dbo.industry WHERE row_number between 475 and 948
Run Code Online (Sandbox Code Playgroud)

小智 5

可能为时已晚,但我通常会这样做

; with cte(rownum)as(
    select row_number () over(partition by [Col1], [Col2] order by Col3) from [table]
)
delete from cte where rownum > 1
Run Code Online (Sandbox Code Playgroud)


Tim*_*cox -4

这并不是一个真正的答案。数据存在一些问题,使得上述答案(虽然很好)变得无关紧要。我只是删除了表格,然后从固定宽度重新导入它。这次我更加小心了,没有出现重复。