我有一個名爲「buildings」的表,其中包含名爲「use」的varchar(50)字段。該表已有幾千條記錄,但「使用」值全爲空。我想用從字符串列表(例如,倉庫,辦公室,市場,零售店,車間)中隨機選擇的值更新這些表。我也想留下一些null來模擬真實世界的用法。如何使用從已知列表中隨機選擇的字符串更新表中的字段?
如何使用從已知列表中隨機選擇的字符串更新表中的字段?
我有一個名爲「buildings」的表,其中包含名爲「use」的varchar(50)字段。該表已有幾千條記錄,但「使用」值全爲空。我想用從字符串列表(例如,倉庫,辦公室,市場,零售店,車間)中隨機選擇的值更新這些表。我也想留下一些null來模擬真實世界的用法。如何使用從已知列表中隨機選擇的字符串更新表中的字段?
如何使用從已知列表中隨機選擇的字符串更新表中的字段?
這可能會爲你工作:
BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
這不是隨機的,但是這是一個很好的和簡單的方法來做到這一點,只要你有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
這幾乎肯定會比一個更容易和更快「隨機「的方法。然後再一次,它可能不夠隨機。
也可以填充一個表的選擇,尤其是如果有很多選擇。 – 2009-01-16 07:42:03