删除sql表中的重复记录
我的表中有重复记录,希望使用标识列值删除它们。我希望“Fname”和“Lname”列能够唯一地标识每个记录。但有重复的Fname和Lname,上载日期不同。下面是我为解决这个问题而设计的SQL查询,但它将采用Min(id)而不是Max(uploaddate)。请帮助修复此代码删除sql表中的重复记录,sql,Sql,我的表中有重复记录,希望使用标识列值删除它们。我希望“Fname”和“Lname”列能够唯一地标识每个记录。但有重复的Fname和Lname,上载日期不同。下面是我为解决这个问题而设计的SQL查询,但它将采用Min(id)而不是Max(uploaddate)。请帮助修复此代码 Select Max(uploaddate), Min(id), Fname, Lname From tbl Group By Fname, Lname 这可能对你有帮助 小心 由于这是DELETE,因
Select Max(uploaddate),
Min(id),
Fname,
Lname
From tbl
Group By Fname, Lname
这可能对你有帮助 小心 由于这是
DELETE
,因此在执行此操作之前,将其更改为SELECT*
,而不是DELETE
,并验证输出。如果您对结果满意,请将其更改回DELETE
DELETE FROM MY_TABLE
WHERE MY_TABLE.ROWID IN (
SELECT ROWID
FROM (
SELECT MY_TABLE.ROWID
, ROW_NUMBER() OVER (PARTITION BY FNAME, LNAME ORDER BY UPLOADDATE DESC, ID ASC) RNK
FROM MY_TABLE
) TMP
WHERE RNK = 2
)
我不确定你的数据库是什么。我已经用ORACLE测试了这个问题。你应该通过选择sql语句并按下{}按钮,将sql代码格式化为代码。我想我已经找到了答案,但我删除了它,因为我想确认问题是什么。据我所知,您需要一个查询,该查询将生成一组使用上次上传记录id的唯一记录?@yaredmulneh您觉得我下面的回复有用吗?