我有一个名为“buildings”的表,其中包含一个名为“use”的 varchar(50) 字段。该表已经有几千条记录,但是“使用”值都是空的。我想用从字符串列表(例如,仓库、办公室、市场、零售、车间)中随机选择的值来更新这些表。我还想保留其中一些为空来模拟现实世界的使用。
如何使用从已知列表中随机选择的字符串更新表中的字段?
我有一个名为“buildings”的表,其中包含一个名为“use”的 varchar(50) 字段。该表已经有几千条记录,但是“使用”值都是空的。我想用从字符串列表(例如,仓库、办公室、市场、零售、车间)中随机选择的值来更新这些表。我还想保留其中一些为空来模拟现实世界的使用。
如何使用从已知列表中随机选择的字符串更新表中的字段?
这可能对您有用:
BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
这不是随机的,但这是一种很好且简单的方法,前提是您的 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
这几乎肯定会比“随机”方法更容易和更快。再说一次,它可能不够随机。