用随机数更新 table

Update table with random numbers

我需要用随机数更新我的 table,这是我的 table:

chr pos ref alt id_disease
chr1 123 A   A     NULL
chr2 456 A   T     NULL

我想用 1 到 30000079 之间的随机数更新疾病列。

获得这个:

chr pos ref alt id_disease
chr1 123 A   A     5024
chr2 456 A   T     300045

有随机函数吗?

使用RANDOM():

UPDATE yourTable
SET id_disease = FLOOR(RANDOM() * 30000079) + 1

说明

Postgres 的 RANDOM() 函数 returns 范围 0.0 <= x < 1.0 中的一个数字。在上面的查询中,这意味着 smallest 值将出现在 RANDOM() returns 0 时,给出 1 作为值。当 RANDOM() returns 类似 0.999999 时,会出现 最高 值,这会给出略低于 30000079 的值。 FLOOR 函数会将其降低到 30000078,但随后我们将 1 添加到它以使其恢复到 30000079,您的最高值。

我 运行 解决了所有行都更新为相同值的问题。发生这种情况是因为 运行dom 语句只有 运行 一次。我必须先在临时 table 中生成 运行dom 编号,然后更新实际的 table:

WITH r AS (SELECT id, floor(random() * 30000079) AS rnd FROM table_name)
UPDATE table_name AS t
SET column_name = r.rnd
FROM r WHERE r.id = t.id;