所以我有一个表,其中有一列标记为“序列”,它实际上不是序列数据类型,只是一个在对象模型中转换以按特定顺序显示项目的数字字段。在少数情况下,由于数据库操作,某些记录将具有重复的序列,导致无法在 UI 中重新排序。在其他情况下,测序中存在间隙(不是严重问题)。我想做的是从 1 开始重新编号这些数字字段,但它必须按“co”字段分组,然后按您在下面看到的现有序列字段分组:
这是我运行的查询以获得您看到的结果:
SELECT row_number() OVER (ORDER BY C.co, T.sequence) AS RowNum, C.co, T.sequence
FROM TNode T
INNER JOIN CInfo C ON C.guidfield = T.contextID
WHERE T.nodeTypeID = '0EC43D28-EA1F-4FBE-BA50-06161AFAB382'
AND T.parentNodeID ='A276DF06-4569-11D5-8052-00D0B7696EF9'
GROUP BY C.co, T.sequence
我想要实现的目标就是这个。请注意记录上的序列如何稍微重新编号,其中它不是直接的 1、2、3...,但每次遇到新的“co”时都必须再次从 1 开始,然后还按现有序列进行排序那里 :
搞定了!谢谢你们俩,这正是我所需要的。使用以下内容,我能够成功按顺序更新排序。
对于
UPDATE
不需要重新加入的查询,可以直接更新派生表