我有一个名为“buildings”的表,其中包含名为“use”的varchar(50)字段。该表已有数千条记录,但“use”值均为null。我想用字符串(例如,仓库,办公室,市场,零售,研讨会)中的随机选择值更新这些表。我还想留下一些null来模仿现实世界的用法。
如何使用从已知列表中随机选择的字符串更新表中的字段?
答案 0 :(得分:7)
这可能对您有用:
BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
答案 1 :(得分:0)
这不是随机的,但这是一个很好的简单方法,只要你有一个统一的ID分布:
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
这几乎肯定比“随机”方法更容易,更快捷。然后,它可能不够随意。