如何在SQL的整个列中随机分配一组值?

时间:2019-11-18 11:44:30

标签: sql postgresql

我是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;

1 个答案:

答案 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 <>小提琴。