奇怪的问题,我知道。我不想删除所有行并重新开始,但我们有一个开发数据库表,其中某些行具有重复的 ID,但值不同。
我想删除所有具有重复 ID 的记录,这样我就可以强制新版本表上的数据完整性并建立关系。目前,它是由代码插入和生成的 ID(旧版)。
从另一个问题我得到了这个:
delete
t1
from
tTable t1, tTable t2
where
t1.locationName = t2.locationName and
t1.id > t2.id
但是这不起作用,因为 ID 是相同的!
如何删除除一条 ID 相同的记录之外的所有记录?即删除同ID记录数>1的地方?如果这不可能,那么删除所有具有重复 ID 的记录就可以了。
最佳答案
在 SQL Server 2005
及更高版本中:
WITH q AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY locationName ORDER BY id) rn
FROM tTable
)
DELETE
FROM q
WHERE rn > 1
关于SQL删除具有相同ID的记录,留下1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5743273/