我需要更新我的随机数表,这是我的表:更新表随机数
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
是否有一些随机函数?
我需要更新我的随机数表,这是我的表:更新表随机数
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()
功能范围0.0 <= x < 1.0
返回一个数字。在上面的查询中,这意味着当RANDOM()
返回0
时,将发生最小值,给出1
作为值。当RANDOM()
返回类似于0.999999
的值时,的最高值的值将会出现,这将给出略低于30000079
的值。 FLOOR
函数会将其降至30000078
,但随后我们会添加1
以使其回到您的最高值30000079
。
我遇到了所有行都使用相同值更新的问题。发生这种情况是因为随机语句只运行一次。我不得不首先生成一个临时表中的随机数,以及更新后的实际表:
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;
没错这是一个另一种方式来做到这一点,我尝试,但在我的情况RANDOM()已更新以及我的表。 – xCloudx8