在我的表中,每种颜色都有索引,它定义了国家内部的颜色顺序,每个国家的顺序可能不同。
| 乡村|颜色|颜色_顺序|其他_数据|
| - ------|- ------|- ------|- ------|
| 加拿大|绿色|1个||
| 加拿大|绿色|1个||
| 加拿大|绿色|1个||
| 加拿大|红色|第二章||
| 加拿大|红色|第二章||
| 加拿大|黄色|三个||
| 加拿大|黄色|三个||
| 法国|红色|1个||
| 法国|蓝色|第二章||
| 法国|蓝色|第二章||
删除一种颜色(所有'red'行)后,我需要为每个国家重新编号color_order。
| 乡村|颜色|颜色_顺序|其他_数据|
| - ------|- ------|- ------|- ------|
| 加拿大|绿色|1个||
| 加拿大|绿色|1个||
| 加拿大|绿色|1个||
| 加拿大|黄色|第二章||
| 加拿大|黄色|第二章||
| 法国|蓝色|1个||
| 法国|蓝色|1个||
它应该是类似嵌套循环的东西,以迭代通过国家/颜色,似乎查询应包括:ROW_NUMBER()OVER(分区按国家排序按颜色排序)
有什么想法吗?
1条答案
按热度按时间dhxwm5r41#
使用公用表表达式(CTE),首先选择要保留在表中的行(颜色不是“红色”的所有行)。ROW_NUMBER然后使用()函数根据每个国家/地区内color_order列的顺序为每行分配新的color_order最后,使用UPDATE语句将原始表中的color_order值更新为CTE中计算的新值。