用随机数更新 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;
我需要用随机数更新我的 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;