sql - 如何更新间隔值增加的列?

标签 sql postgresql

我在 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()

assigns unique numbers to each row within the PARTITION given the ORDER BY clause

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

相关文章:

sql - 相当于 SQL Server INSERTED 和 DELETED 表的 Oracle

sql - 如何避免在 sql 查询中使用多个 CAST?

postgresql - 在 postgreSQL 中使用主键

php - 在 laravel postgres 中搜索多维 jsonb 数据

java - 数据库连接功能在 PHP 中实现

sql - 如何将水平行转换为垂直 SQL Server

java - Postgres JDBC : Especific error code of PSQLException?

json - 将一对多关系检索到 JSON sql pure、Golang、Performance

Mysql 描述查询行估计

postgresql - 索引 jsonb 数据以进行模式匹配搜索