根据上次更新日期删除重复值 SQL
Removing Duplicated Values Based on Lastupdated Date SQL
我正在尝试删除我们数据库中的重复案例。
有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 数据库
任何帮助,将不胜感激
谢谢
如果存在具有相同 ClientID 的新行,则删除一行:
delete from tablename t1
where exists (select * from tablename t2
where t2.ClientID = t1.ClientID
and t2.LastVerified > t1.LastVerified)
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
你可以这样做:
DELETE X FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY ClientID ORDER BY LastVerified DESC) R
FROM @t
) X
WHERE R!=1
这对你有帮助,max(projectid) 有助于找到最后验证的。
所以查询变得简单
DELETE FROM TABLE1 WHERE PROJECTID NOT IN
(SELECT MAX(PROJECTID) FROM TABLE1 GROUP BY CLIENTID)
我正在尝试删除我们数据库中的重复案例。
有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 数据库 任何帮助,将不胜感激 谢谢
如果存在具有相同 ClientID 的新行,则删除一行:
delete from tablename t1
where exists (select * from tablename t2
where t2.ClientID = t1.ClientID
and t2.LastVerified > t1.LastVerified)
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
你可以这样做:
DELETE X FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY ClientID ORDER BY LastVerified DESC) R
FROM @t
) X
WHERE R!=1
这对你有帮助,max(projectid) 有助于找到最后验证的。 所以查询变得简单
DELETE FROM TABLE1 WHERE PROJECTID NOT IN
(SELECT MAX(PROJECTID) FROM TABLE1 GROUP BY CLIENTID)