我正在尝试更改现有架构以添加新列。
以下是我的案例 - http://sqlfiddle.com/#!3/06c58/1
Order
列的值为int,如果我正在对COUNT(Id)
进行分组,则该值应表示UI上从1到TemplateId
的项目顺序。
我看到2个可能的解决方案 - 使Order
计算字段或使用Cursor更新它。
哪一个更好?如果使用游标win更新 -
我可以知道如何进行此类更新吗?
答案 0 :(得分:1)
我能想到的一个方法是:
你不需要直接处理游标来执行此操作,并且操作将以某种方式处于原子状态,因为它包含在事务块中。
更新本身可以这样做:
;with ord as
(Select id, row_number() over (partition by templateid order by selectedfieldid) rn from yourtable)
Update dbo.titlefields
Set order = rn - 1 --ROW_NUMBER() starts at 1 but we want to start at 0
From dbo.titlefields t inner join
ord x on t.id = x.id
如果我已正确理解您的要求,请告诉我,如果不是这样,我会更新我的答案。