You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Express 2014无主键事务表删重复保留最新记录的方案咨询

操作前置提醒

操作前请先对原表做全量备份,避免误删数据无法恢复。

步骤1:先验证待删除的重复记录

将语句中的你的表名替换为实际的销售事务表名称后执行,可以查看所有待删除的重复记录,核对符合预期后再执行删除操作:

WITH RankedRecords AS (
    SELECT 
        ACC_PART_MAT,
        TX_DATE,
        ROW_NUMBER() OVER (PARTITION BY ACC_PART_MAT ORDER BY TX_DATE DESC) AS RowNum
    FROM 你的表名
)
SELECT * FROM RankedRecords WHERE RowNum > 1;

步骤2:执行重复记录删除

确认待删除数据无误后,执行以下语句完成去重:

WITH RankedRecords AS (
    SELECT 
        ROW_NUMBER() OVER (PARTITION BY ACC_PART_MAT ORDER BY TX_DATE DESC) AS RowNum
    FROM 你的表名
)
DELETE FROM RankedRecords WHERE RowNum > 1;

说明

  • 该方案适配SQL Server 2014及以上版本,无主键表也可以正常执行,原理是通过窗口函数对相同ACC_PART_MAT的记录按TX_DATE倒序排名,删除排名大于1的非最新记录。
  • 如果同一个ACC_PART_MAT存在多条TX_DATE完全相同的记录,上述语句会随机保留一条,你可以在ORDER BY后追加其他可区分的排序字段(比如交易流水号、交易时间戳等)明确保留规则,示例:ORDER BY TX_DATE DESC, TX_SERIAL_NO DESC

内容的提问来源于stack exchange,提问作者WillSmyth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:57:01