我有一个表,在表上添加了一个新列nxvl。
我需要这样做
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.datePostgres不允许在更新时订购
它大约有10万行。可以用Update命令来完成吗?现在,val_col中只有两个值-- ie 1和2
因为这是一次性的事情,所以我不介意使用函数并循环遍历每一行和更新。
想知道是否有更好的方法来实现它。
使用Postgres 12.2
发布于 2020-03-15 14:00:40
您可以在子查询中设置顺序并获取关联的序列值,然后更新表(甚至不考虑更新顺序)。
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;https://stackoverflow.com/questions/60692467
复制相似问题