Rog*_*des 5 sql database postgresql
我想在 Postgres 中更新表中的每一行并将每一行设置为不同的值;这个值将是一个带有起始值的增量值。
例如,假设我有tab_a包含以下数据的表:
|attr_a|attr_b|
|1 |null |
|2 |null |
|3 |null |
|4 |null |
Run Code Online (Sandbox Code Playgroud)
我可能想要的输出是:
|attr_a|attr_b|
|1 |5 |
|2 |6 |
|3 |7 |
|4 |8 |
Run Code Online (Sandbox Code Playgroud)
这是我的脚本:
UPDATE tab_a
SET attr_b = gen.id
FROM generate_series(5,8) AS gen(id);
Run Code Online (Sandbox Code Playgroud)
但是没有按预期工作......
你可以做
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5906 次 |
| 最近记录: |