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

SQL Server中按ID去重且重复时优先保留IsPopular=1记录的方法

SQL Server 按ID去重实现方案

你可以通过ROW_NUMBER()窗口函数完成需求,SQL语句如下:

WITH RankedRecords AS (
    SELECT 
        ID,
        Type,
        StoreID,
        IsPopular,
        ROW_NUMBER() OVER(PARTITION BY ID ORDER BY IsPopular DESC) AS RowNum
    FROM 你的实际表名
)
SELECT ID, Type, StoreID, IsPopular
FROM RankedRecords
WHERE RowNum = 1;

逻辑说明

  • 首先用CTE(公共表表达式)对记录按ID字段分组,同分组内的记录按照IsPopular倒序排序,值为1的记录会排在分组第一位,对应RowNum值为1
  • 最终仅过滤取出所有RowNum=1的记录,就实现了同ID优先保留IsPopular=1的去重效果

直接删除原表重复记录的写法

如果你需要直接清理原表中的重复数据,可使用以下语句:

WITH RankedRecords AS (
    SELECT 
        ROW_NUMBER() OVER(PARTITION BY ID ORDER BY IsPopular DESC) AS RowNum
    FROM 你的实际表名
)
DELETE FROM RankedRecords WHERE RowNum > 1;

补充说明:如果同一个ID存在多条IsPopular=1的记录,上述写法会随机返回其中一条,若有额外排序规则,可在ORDER BY IsPopular DESC后补充其他排序字段自定义优先级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:15:05