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

优化SQL Server中基于FrameLossCount保留最大值的ElementID1去重查询

简洁的SQL Server去重方案(保留FrameLossCount最大值行)

方案1:DELETE + 子查询(最简洁直观)

如果每个ElementID1对应的最大FrameLossCount是唯一值,直接用子查询定位需要删除的行:

DELETE t
FROM YourTable t
WHERE FrameLossCount < (
    SELECT MAX(FrameLossCount)
    FROM YourTable
    WHERE ElementID1 = t.ElementID1
);

逻辑:对表中每一行,判断其FrameLossCount是否小于同ElementID1分组下的最大值,若是则删除该行。

方案2:处理同ElementID1存在多个最大值行的场景

如果同一个ElementID1下有多个行的FrameLossCount都是最大值,且你只需要保留其中任意一行,可以用简化的窗口函数写法:

WITH cte AS (SELECT *,ROW_NUMBER()OVER(PARTITION BY ElementID1 ORDER BY FrameLossCount DESC)rn FROM YourTable)
DELETE cte WHERE rn>1;

这个写法在保持CTE清晰性的同时,压缩了代码结构,比常规多行CTE更紧凑。

注意事项

  • 执行删除操作前,务必将DELETE替换为SELECT *,先验证待删除的行是否符合预期
  • 如果表中有主键/唯一标识列,建议在条件中加入该列,避免因FrameLossCount重复导致误删

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:47:11