我有一个名为“建筑”,它包含一个varchar(50),命名为“使用”字段的表。该表已经有几千条记录,但是“使用”值均为空。我想从一个字符串列表更新这些此表与随机选择的值的(例如,仓库,办公室,市场,零售,车间)的。我也想留下一些空这些的,以模拟真实世界的使用。

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

有帮助吗?

解决方案

这可能会为你工作:

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

这是几乎可以肯定将是比“随机”的方式更容易和更快。再说,这可能还不够随机的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top