通过SQL将列更新为组中的行号

问题描述 投票:0回答:1

我正在使用的当前数据库有一个表,其中定义的位置不正确。我有以下查询,该查询可以让我将位置更新为行号(RN),但仅针对具有ParentId

的单个对象组
SELECT id, ParentId, Position, Title, -1+ ROW_NUMBER() OVER (ORDER BY [Position]) as RN
FROM Objects
where ParentId = 4390

SQL results screenshot

但是有多个ParentId组。

我的问题是,如何在保持这些分组和行号增量正确的同时将此查询应用于整个对象表?

我知道我可以使用游标遍历ParentId的列表,但这感觉效率很低。

sql database position
1个回答
0
投票

您需要添加PARTITION BY

SELECT id
    ,ParentId
    ,Position
    ,Title
    ,-1+ ROW_NUMBER() OVER (PARTITION BY ParentId ORDER BY [Position]) as RN
FROM Objects
© www.soinside.com 2019 - 2024. All rights reserved.