4

我有一个名为“buildings”的表,其中包含一个名为“use”的 varchar(50) 字段。该表已经有几千条记录,但是“使用”值都是空的。我想用从字符串列表(例如,仓库、办公室、市场、零售、车间)中随机选择的值来更新这些表。我还想保留其中一些为空来模拟现实世界的使用。

如何使用从已知列表中随机选择的字符串更新表中的字段?

4

2 回答 2

8

这可能对您有用:

BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
于 2009-01-16T06:00:01.137 回答
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

这几乎肯定会比“随机”方法更容易和更快。再说一次,它可能不够随机。

于 2009-01-16T02:52:54.353 回答