MS SQL 更新每种类型的编号 (ID)
MS SQL Update Numbers (ID) for each Type
我刚刚在 SQL table 中创建了一个列(优先级)。
我希望能够设置一次性更新,为该议程类型的每种流派类型的每个当前优先单元设置 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
是微不足道的。
我刚刚在 SQL table 中创建了一个列(优先级)。 我希望能够设置一次性更新,为该议程类型的每种流派类型的每个当前优先单元设置 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
是微不足道的。