sql - 用增量值 Postgres 更新每一行

标签 sql database postgresql

我想更新 Postgres 表格中的每一行并将每一行设置为不同的值;该值将是具有起始值的增量值。

例如,假设我有包含以下数据的表 tab_a:

|attr_a|attr_b|
|1     |null  |
|2     |null  |
|3     |null  |
|4     |null  |

我可能想要的输出是:

|attr_a|attr_b|
|1     |5     |
|2     |6     |
|3     |7     |
|4     |8     |

这是我的脚本:

UPDATE tab_a
SET attr_b = gen.id
FROM generate_series(5,8) AS gen(id);

但是没有按预期工作......

最佳答案

你可以做

UPDATE tab_a upd
SET attr_b = row_number + 4 -- or something like row_number + (select max(attr_a) from tab_a)
FROM (
  SELECT attr_a, row_number() over ()
  FROM tab_a
  ORDER BY 1
  ) a
WHERE upd.attr_a = a.attr_a;

关于sql - 用增量值 Postgres 更新每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37143658/

相关文章:

java - Postgres 中的 NamedParameterJdbcTemplate 和 JSON

mysql - 在 SQL 中返回记录 "only first,"和 "all but first"

php - 如何使用 codeigniter 使用多个或单个 id 在单个查询中更新多行或单行?

mysql - Sql - 重复键更新

php - 当数据已存在时,使用 Codeigniter 停止插入数据库

php - 在 PostgreSQL 中使用 INTERVAL 添加小时日期/时间

sql - 聚合查询避免外部磁盘排序

sql - Azure、DocumentDB、如何使用 JOIN 返回唯一结果

sql - 删除sql中的所有表项

postgresql - 如何列出使用第二旧列车的列车运营商 (PostgreSQL)