2009-01-16 65 views
3

我有一個名爲「buildings」的表,其中包含名爲「use」的varchar(50)字段。該表已有幾千條記錄,但「使用」值全爲空。我想用從字符串列表(例如,倉庫,辦公室,市場,零售店,車間)中隨機選擇的值更新這些表。我也想留下一些null來模擬真實世界的用法。如何使用從已知列表中隨機選擇的字符串更新表中的字段?

如何使用從已知列表中隨機選擇的字符串更新表中的字段?

回答

7

這可能會爲你工作:

BEGIN; 
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1]; 
COMMIT; 
+0

也可以填充一個表的選擇,尤其是如果有很多選擇。 – 2009-01-16 07:42:03

0

這不是隨機的,但是這是一個很好的和簡單的方法來做到這一點,只要你有ID的realtively均勻分佈:

UPDATE Buildings SET Use = 'warehouse' WHERE ID % 6 = 0 
UPDATE Buildings SET Use = 'office' WHERE ID % 6 = 1 
UPDATE Buildings SET Use = 'market' WHERE ID % 6 = 2 
UPDATE Buildings SET Use = 'retail' WHERE ID % 6 = 3 
UPDATE Buildings SET Use = 'workshop' WHERE ID % 6 = 4 
UPDATE Buildings SET Use = NULL  WHERE ID % 6 = 5 

這幾乎肯定會比一個更容易和更快「隨機「的方法。然後再一次,它可能不夠隨機。

相關問題