使用 SQL 删除 Dept 中有多个用户的地方

delete where you have multiple users within Dept using SQL

我试图在每个位置有多个用户的情况下保留一个用户。我还想保留最后更新的用户。
这是我的数据

ID  Location   REGION    LastUpdate
1     CLT       NA       1/15/2014    
3     CLT       NA        7/02/2015   
8     NY        NA        03/03/2000
11    NY        NA        04/8/2015

期望的结果

ID  Location   REGION    LastUpdate  
3     CLT       NA        7/02/2015   
11    NY        NA        04/8/2015

假设 SQL 服务器 2005+:

;WITH CTE AS
(
    SELECT *,
           RN = ROW_NUMBER() OVER(PARTITION BY Location ORDER BY LastUpdate DESC) 
    FROM dbo.YourTable
)
SELECT *
FROM CTE
WHERE RN = 1;

如果你想删除其他行,那么你应该这样做:

;WITH CTE AS
(
    SELECT *,
           RN = ROW_NUMBER() OVER(PARTITION BY Location ORDER BY LastUpdate DESC) 
    FROM dbo.YourTable
)
DELETE FROM CTE
WHERE RN > 1;

使用 GROUP BY LOCATION, Region,然后删除该集合中没有 MAX lastupdate 的所有其他行。

WITH CTE AS (SELECT MIN(ID), LOCATION, REGION, MAX(lastUpdate)
    FROM YOURTABLE 
    GROUP BY LOCATION, REGION)
    DELETE FROM YOURTABLE
    WHERE NOT EXISTS (SELECT * FROM CTE WHERE A.ID=CTE.ID)