基于Lastupdated Date SQL删除重复值

时间:2016-09-15 10:03:19

标签: sql sql-server sql-delete

我正在尝试删除数据库中的重复案例。 共有3个字段:ProjectIDClientIDLastVerified

我们的某个应用存在问题,并且已创建了多个新的ProjectID

我想要做的是删除重复项,只留下上次验证的行。 例如:

    ProjectID   ClientID    LastVerified
     20773        336106    2016-07-29 01:38:37.450
     20869        336106    2016-08-23 11:19:51.153

在这里,我想保留上次验证的第二行。

我正在使用SQL数据库 任何帮助,将不胜感激 感谢

4 个答案:

答案 0 :(得分:1)

你可以这样做:

DELETE X FROM
(
     SELECT *, ROW_NUMBER() OVER (PARTITION BY ClientID ORDER BY LastVerified DESC) R
     FROM @t
) X
WHERE R!=1

答案 1 :(得分:0)

如果存在具有相同ClientID的另一行,则删除一行:

delete from tablename t1
where exists (select * from tablename t2
              where t2.ClientID = t1.ClientID
                and t2.LastVerified > t1.LastVerified)

答案 2 :(得分:0)

WITH CTE AS(
   SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
       RN = ROW_NUMBER()OVER(PARTITION BY col1 ORDER BY col1)
   FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1

答案 3 :(得分:0)

这有助于你和max(projectid)帮助找到最后一次验证。 所以查询变得简单

DELETE FROM TABLE1 WHERE PROJECTID NOT IN 
(SELECT MAX(PROJECTID) FROM TABLE1 GROUP BY CLIENTID)