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;
我从另一个提供商那里继承了数据,有 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;