删除除一之外的重复行

时间:2021-05-20 18:40:34

标签: sql sql-server tsql

我正在处理一个只有两列 - AddressDateEntered 的表。该表有多个具有不同 DateEntered 的重复记录。像这样:

Address       | DateEntered
--------------+---------------------    
10 Park Ave   | 5-6-2012
7 Sterling Rd | 7-8-2012
10 Park Ave   | 2-2-2010
10 Park Ave   | 5-20-2021

我想保留最近日期的地址并去掉旧的地址。结果应该是这样的:

Address       | DateEntered
--------------+---------------
7 Sterling Rd | 7-8-2012
10 Park Ave   | 5-20-2021

你能帮我构建这个查询吗?我什至不知道从哪里开始。我正在阅读有关 Common Table Expressions 的内容,但没有到达任何地方。

1 个答案:

答案 0 :(得分:4)

通过 CTE 与窗口函数 row_number() 一起快速简便

示例或dbFiddle

;with cte as ( 
    Select *
          ,RN = row_number() over (partition by address order by DateEntered Desc) 
     From YourTable
)
Delete from cte where RN>1

更新后的表格

Address         DateEntered
7 Sterling Rd   2012-07-08
10 Park Ave     2021-05-20
相关问题