首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多序列更新postgres

多序列更新postgres
EN

Stack Overflow用户
提问于 2020-03-15 11:41:57
回答 1查看 35关注 0票数 1

我有一个表,在表上添加了一个新列nxvl。

我需要这样做

代码语言:javascript
复制
UPDATE table1
SET nxvl = nexval('my_sequence_1')
from table2 
where table1.col_id = table2.id and table2.val_col=1
order by table1.date

UPDATE table1
SET nxvl = nexval('my_sequence_2')
from table2 
where table1.col_id = table2.id and table2.val_col=2
order by table1.date

Postgres不允许在更新时订购

它大约有10万行。可以用Update命令来完成吗?现在,val_col中只有两个值-- ie 1和2

因为这是一次性的事情,所以我不介意使用函数并循环遍历每一行和更新。

想知道是否有更好的方法来实现它。

使用Postgres 12.2

EN

回答 1

Stack Overflow用户

发布于 2020-03-15 14:00:40

您可以在子查询中设置顺序并获取关联的序列值,然后更新表(甚至不考虑更新顺序)。

代码语言:javascript
复制
UPDATE table1
SET nxvl = a.seq
FROM
 ( select table1.id, nexval('my_sequence_1') seq
  from table1 
   join table2 
     on table1.col_id = table2.id 
        and table2.val_col=1
  order by table1.date
 ) a
WHERE table1.id = a.id;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60692467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档