我需要帮助重新排序数字,如下例所示。
ID NAME SEQ_NUM
---|-----|---------
1 N1 1
2 N1 2
3 N1 3
4 N2 1
5 N2 2
6 N3 1
现在让我们说如果我执行少量删除和更新,如下所示
ID NAME SEQ_NUM
---|------|-------
1 N1 1
3 N1 4
4 N2 2
5 N2 3
6 N3 6
现在我正在尝试编写单个更新查询来更新上表,如下所示。
ID NAME SEQ_NUM
---|------|--------
1 N1 1
3 N1 2
4 N2 1
5 N2 2
6 N3 1
答案 0 :(得分:1)
merge into the_table
using
(
select id,
name,
row_number() over (partition by name order by seq_num) as new_seq_num
from the_table
) t on (t.id = the_table.id)
when matched then update
set seq_num = t.new_seq_num;
这假设ID
实际上是表格的PK。