我刚刚在我的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
就微不足道了。