我刚在SQL表中创建了一个列(Priority)。 我希望能够设置一次UPDATE,为该AgendaType的每种类型的类型设置每个当前优先级单元的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
这是我可以做的吗?如果是这样,任何有关此的帮助或建议将不胜感激。先谢谢你。
答案 0 :(得分:1)
以下是使用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
这会为每组agendatype和genre创建一个行号。然后update
是微不足道的。