gpt4 book ai didi

sql - 如何通过 where 条件从 1 开始的顺序值重置列的值

转载 作者:行者123 更新时间:2023-11-29 14:31:04 25 4
gpt4 key购买 nike

我有一个表格,其中包括 3 列:

id, priority, dict_id

对于每个dict_id,它有最大1000个优先级,从1开始(顺序)。当我删除一些优先级时,如何使优先级列的值顺序(不使用触发器)。例如:原始数据

id, priority, dict_id
1, 1, 1
2, 2, 1
3, 3, 1
4, 4, 1
5, 5, 1
6, 6, 1

删除id 3和5后,表的数据:

id, priority, dict_id
1, 1, 1
2, 2, 1
4, 4, 1
6, 6, 1

我想要这样的优先级列

    id, priority, dict_id
1, 1, 1
2, 2, 1
4, 3, 1
6, 4, 1

最佳答案

您可以使用UPDATE FROM 语法

UPDATE yourtab a 
SET priority = s.priority
FROM (SELECT id,
row_number()
OVER (
ORDER BY id) priority
FROM yourtab) s
WHERE a.id = s.id;

Demo

关于sql - 如何通过 where 条件从 1 开始的顺序值重置列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51814832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com