在 Postgres UPDATE 查询中循环



(Postgres 10.10( 我在my_table有以下字段:

loval INTEGER 
hival INTEGER 
valcount INTEGER 
values INTEGER[]

我需要将设置为包含valcount随机整数的数组,每个整数介于lovalhival之间。所以对于:

loval: 3 
hival: 22 
valcount: 6

我希望将设置为以下内容:

{3, 6, 6, 13, 17, 22}

我知道如何使用低效的"遍历光标"解决方案来做到这一点,但我想知道 Postgres 是否有办法进行内联循环计算。

注意:我看了generate_series,但我认为它没有产生我需要的东西。

generate_series()确实是解决方案:

update my_table
set "values" = array(select (random() * (hival - loval) + loval)::int 
from generate_series(1, valcount));

在线示例


请注意,values是保留关键字,则将其用作列名不是一个好主意。

相关内容

  • 没有找到相关文章

最新更新