我正在使用的当前数据库有一个表,其中定义的位置不正确。我有以下查询,该查询可以让我将位置更新为行号(RN),但仅针对具有ParentId
的单个对象组SELECT id, ParentId, Position, Title, -1+ ROW_NUMBER() OVER (ORDER BY [Position]) as RN
FROM Objects
where ParentId = 4390
但是有多个ParentId组。
我的问题是,如何在保持这些分组和行号增量正确的同时将此查询应用于整个对象表?
我知道我可以使用游标遍历ParentId的列表,但这感觉效率很低。
您需要添加PARTITION BY
SELECT id
,ParentId
,Position
,Title
,-1+ ROW_NUMBER() OVER (PARTITION BY ParentId ORDER BY [Position]) as RN
FROM Objects