删除具有最早GUID的重复记录

时间:2018-11-08 14:58:21

标签: sql sql-server

如何在没有时间戳的情况下从最旧的最新记录中删除重复的记录,而将myfile.jsx删除为GUID

  • 例如,如果我有4条记录,请删除基于GUID的最早的3条

据我所知

Primary Key

但这不能满足我的要求,尽管可以正确删除重复项。有办法吗?还是无法使用WITH cte AS(SELECT ID, ROW_NUMBER() OVER(PARTITION BY CodeOne, CodeTwo ORDER BY(SELECT 0)) RN FROM [InvoiceDatabase].[dbo].[LookUpCode]) DELETE FROM cte WHERE RN > 1; 来判断哪个记录更旧?

1 个答案:

答案 0 :(得分:2)

如果要删除重复的记录但没有时间戳和GUID作为主键,则可以尝试使用%%physloc%%

%%physloc%%是一个虚拟列。此列未记录。因此,使用它需要您自担风险。

WITH cte 
     AS(SELECT ID, ROW_NUMBER() OVER(PARTITION BY CodeOne, CodeTwo
     ORDER BY  %%physloc%%) RN
 FROM [InvoiceDatabase].[dbo].[LookUpCode])
 DELETE FROM cte
WHERE  RN > 1;

sqlfiddle

注意

但是我建议您为订单创建一个时间戳。