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

SQL如何从多行重复数据中仅选择并更新其中一条重复记录

解决方法

使用ROW_NUMBER()窗口函数替代COUNT即可实现按分组取指定行,完整方案如下:


1. 先查询确认需要标记删除的行

以下语句会返回每个重复分组中除保留行外的所有记录,包含完整字段,你可以先执行确认结果是否符合预期:

WITH DataSource AS
(
    SELECT *, 
        -- 按Number分组,ORDER BY规则决定保留哪条,此处按ID升序,序号1为保留行
        ROW_NUMBER() OVER (PARTITION BY Number ORDER BY ID) AS row_num
    FROM Customers
)
SELECT * FROM DataSource
WHERE row_num > 1

2. 直接执行更新操作

确认结果正确后,直接修改语句即可一步完成Deleted字段标记:

WITH DataSource AS
(
    SELECT *, 
        ROW_NUMBER() OVER (PARTITION BY Number ORDER BY ID) AS row_num
    FROM Customers
)
UPDATE DataSource
SET Deleted = 1
WHERE row_num > 1

提示:如果需要调整保留的行,只需要修改ORDER BY后的排序规则即可,比如想保留ID更大的行,改成ORDER BY ID DESC即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:48:00