sql - 删除重复行但保留最早的行(按日期标准) - SQL Server

标签 sql sql-server greatest-n-per-group sql-delete

我有这张表和三列(ID、电子邮件、[上次更新]。

我想删除重复的电子邮件,但保留最后更新的行(按日期标准)。在此示例中,aaa 是重复的。它在 2011 年和 2014 年有 1 行。我想只保留 2014 年。

ID       Email          Last update         
a-4        aaa           10/01/2011 
b-1        bbb           10/02/2012    
k-1        ccc           05/03/2013    
d-9        aaa           10/08/2014
t-7        bbb           02/09/2015

最佳答案

在 SQL Server 中,您可以使用 CTE 来执行 DELETE:

;WITH ToDelete AS (
   SELECT ROW_NUMBER() OVER (PARTITION BY Email         
                             ORDER BY [Last update] DESC) AS rn
   FROM mytable
)
DELETE FROM ToDelete
WHERE rn > 1

关于sql - 删除重复行但保留最早的行(按日期标准) - SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36240844/

相关文章:

java - 使用设置参数在 JPA 查询中插入特殊字符

python - pyQT 和 MySQL 或 MSSQL 连接

sql - 在 PostgreSQL 中使用 group by 时如何获取最后一条记录

SQL 按年龄范围分组

sql - 查找特定字符和/或字符串 SQL Server 2008

php - MySql 为每个 id 查找多行

mysql - SQL 仅选择列上具有最大值的行

php - MySQL 三表连接

sql - 仅当至少一行匹配条件时才选择

Android SQLite 不自动递增