SQL 服务器版本
删除所有 service_date = '2018-08-29 13:05:00.000' 的重复行(第 3 行到第 18 行),但保留最旧的行(第 2 行),当然还保留第 1 行,因为它的 service_date 不同。不要介意 create_timestamp 或 document_file 因为它是同一个客户。有什么想法吗?
最佳答案
在 SQL Server 中,我们可以尝试使用 CTE 进行删除:
WITH cte AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY service_date ORDER BY create_timestamp) rn
FROM yourTable
)
DELETE
FROM cte
WHERE rn > 1;
此处的策略是为共享相同 service_date
的每组记录分配一个行号,其中 1 分配给该组中最旧 的记录。然后,我们可以通过仅针对行号大于 1 的所有记录来进行删除。
关于sql - 根据一列相同的值删除重复行但保留一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53110966/