删除sql表

时间:2017-03-24 00:36:28

标签: sql

我的表中有重复的记录,想要使用Identity列值删除它们。我想要列“Fname”和“Lname”来唯一标识每条记录。但是有重复的Fname和Lname具有不同的上传日期。下面是我设计用于解决问题的SQL查询,但是将采用Min(id)而不是Max(uploaddate)。请帮忙修复此代码。

Select Max(uploaddate),
   Min(id),
   Fname,
   Lname
From tbl
Group By Fname, Lname

1 个答案:

答案 0 :(得分:1)

这可能对您有所帮助,

注意

由于这是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

对此进行了测试