我正在尝试删除数据库中的重复案例。
共有3个字段:ProjectID
,ClientID
,LastVerified
。
我们的某个应用存在问题,并且已创建了多个新的ProjectID
。
我想要做的是删除重复项,只留下上次验证的行。 例如:
ProjectID ClientID LastVerified
20773 336106 2016-07-29 01:38:37.450
20869 336106 2016-08-23 11:19:51.153
在这里,我想保留上次验证的第二行。
我正在使用SQL数据库 任何帮助,将不胜感激 感谢
答案 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)