我需要更新我的隨機數表,這是我的表:更新表隨機數
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