SQL - 删除重复项

SQL - Remove Duplicates

我从另一个提供商那里继承了数据,有 2 table 需要清理

项目在一个房间内,并通过 Rooms.RoomID / Items.RoomID

linked

每次检查一个项目时,它都会创建一个房间和项目的副本,所以每个房间和每个项目都有 6 条记录(每个都有唯一的 RoomID,所以 1 到 1)

我的目标是删除重复的房间并只保留最新的一组记录,然后用 RoomID 更新项目 table(所以我有 1 到很多,即 1 个房间有 6 个项目记录)

我可以对房间进行分组并获得 MAX RoomID,但不知道如何进行更新

一种麂皮绒是这样的:

UPDATE a 
SET a.RoomID = MAX(b.RoomID)
FROM [dbo].[tmp_Items] a
inner join [dbo].[tmp_Rooms] b on b.PropertyID = a.PropertyID
                              and b.FloorLevel = a.FloorLevel
                              and b.Reference = a.Reference

PropertyID、FloorLevel 和 Reference 的组合在项目和房间之间提供了唯一的 link,因为这些列都在 table 中,并且 Reference 对于 [=38] 的每个楼层都是唯一的=] (每一层的每个房间从1开始编号)

感谢任何帮助或指导:)

使用子查询聚合before加入:

UPDATE i 
    SET i.RoomID = r.max_roomid
FROM [dbo].[tmp_Items] i JOIN
     (SELECT PropertyID, FloorLevel, Reference, MAX(r.RoomID) as max_roomid
      FROM [dbo].[tmp_Rooms] r
      GROUP BY PropertyID, FloorLevel, Reference
     ) r
     ON r.PropertyID = i.PropertyID AND
        r.FloorLevel = i.FloorLevel AND
        r.Reference = i.Reference;