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

Microsoft SQL Server如何删除关联Car表的Vehicle表重复记录

Microsoft SQL Server 删除Vehicle表重复记录SQL语句

实现思路

通过窗口函数对满足重复规则的记录分组排序,仅保留每组中VehicleId最小的一条,删除其余重复项。

完整SQL代码

-- 先执行SELECT语句预览要删除的记录,确认无误后再执行DELETE
-- SELECT *
DELETE v
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY v.CarId, v.CounterLimit, v.Kilometers 
            ORDER BY v.VehicleId ASC
        ) AS rn
    FROM Vehicle v
    INNER JOIN Car c ON v.CarId = c.CarId
) v
WHERE v.rn > 1;

逻辑说明

  • 首先通过INNER JOIN Car关联两张表,只处理Vehicle.CarId在Car表中存在的记录,满足重复判定前提
  • PARTITION BY后的三个字段为重复判定的组合维度,相同值的记录会被划分到同一分组
  • 同一分组内按VehicleId升序排序,VehicleId最小的记录行号为1,作为保留项
  • 最终删除行号大于1的所有记录,就是需要清理的重复数据,示例中会精准删除VehicleId = 3的记录

注意事项

执行删除操作前,建议先把代码中的DELETE v替换为SELECT *执行,确认输出的待删除记录符合预期后再执行删除操作,避免误删数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:48:03