MS SQL 更新每种类型的编号 (ID)



我刚刚在我的SQL表中创建了一个列(优先级)。我希望能够设置一个一次性更新,为该议程类型的每种流派的每个当前优先级单元格设置 ID。

我已经无休止地搜索了网络,但似乎找不到我正在寻找的东西。

因此,例如,我的更新将导致以下内容:

AgendaType | Genre | Priority
-------------------------------
Rock         Red     1
Rock         Red     2
-------------------------------
Rock         Blue    1
Rock         Blue    2
Rock         Blue    3
Rock         Blue    4
Rock         Blue    5
-------------------------------
Rock         Green   1
Rock         Green   2
Rock         Green   3
Rock         Green   4
-------------------------------
Rap          Red     1
Rap          Red     2
Rap          Red     3
Rap          Red     4
-------------------------------
Rap          Blue    1
Rap          Blue    2
-------------------------------
Rap          Green   1
Rap          Green   2
Rap          Green   3

这是我能做到的吗?如果是这样,任何帮助或建议将不胜感激。提前谢谢你。

下面是一个使用 row_number()common-table-expression 的选项:

with cte as (
    select AgendaType, 
           Genre, 
           Priority,
           row_number() over (partition by AgendaType, Genre order by AgendaType) rn
    from yourtable
) 
update cte
set priority = rn

这将为每组议程类型和流派创建一个行号。 那么update就微不足道了。

最新更新