首页 > 解决方案 > 删除重复记录并加入另一个表

问题描述

我需要编写一个查询(Microsoft SQL Server)来删除表 Vehicle 中具有 Vehicle.CarId = Car.CarId 并且具有相同连接(CarId、CounterLimit、Kilometers)的重复项。

Car

CarId
-----
11111

Vehicle

VehicleId     CarId      CounterLimit     Kilometers   
-----------------------------------------------------
1             11111               250         120000
2             23456               300         150000
3             11111               250         120000 (record duplicated with 1, should be deleted)

请你帮助我好吗?

标签: sqlsql-server

解决方案


删除 VehicleId 较小的行

delete v
from Vehicle v
where exists (
       select 1
       from Vehicle v2
       where v2.VehicleId > v.VehicleId 
         and v2.CarId = v.CarId and v2.CounterLimit = v.CounterLimit and v2.Kilometers = v.Kilometers)
  

只查询表

  select max(vehicleid) vehicleid, carid, CounterLimit, Kilometers
  from Vehicle
  group by carid, CounterLimit, Kilometers

推荐阅读