我在Postgresql中有一个表:

id qty
1   10
2   11
3   18
4   17

我想给每一行加一个从1开始的数字
意思是我想要:
id qty
1   11   / 10+1
2   13   /11 +2
3   21   /18 +3
4   21   /17+4

第一行得到+1,第二行得到+2,第三行得到+3等等。。。
应该是这样的:
update Table_a set qty=qty+(increased number starting from 1)  order by id asc;

我该怎么做?

最佳答案

如果列ID是唯一的,那么可以使用以下方法

UPDATE Table_a a
SET qty = qty + b.rn
FROM (
    SELECT id,ROW_NUMBER() OVER (ORDER BY id) rn
    FROM Table_a
    ) b
WHERE a.id = b.id

ROW_NUMBER()
给分区中的每一行分配唯一的数字
按条款订货

关于sql - 如何用增加的间隔值更新列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34788854/

10-12 16:24
查看更多