我是PostgreSQL的新手,正在尝试实现以下任务。给定PostgreSQL表中的 user_id 列,我希望为同一表中的 hub_id 列分配随机值。该hub_id应该仅包含n个数字列表中的可用值-例如hub_list [25,38,36,300,350]。
User_id | Hub_id 1 25 2 36 3 25 4 38如何为此执行更新语句?
我只是尝试使用此代码,但它在整个列中仅显示一个值,并且无法获取值列表
UPDATE <table name>
SET hub_id = (select floor(random() * 10) + 1)
WHERE a.hub_id = a.hub_id;
答案 0 :(得分:0)
一种方法使用数组:
UPDATE a.user_id
SET hub_id = (array[25, 38, 36, 300, 350])[floor(1 + random()*cardinality(array[25, 38, 36, 300, 350]))];
Here是db <>小提琴。