如何更新表从已知列表随机选择的一个字符串字段?
-
19-08-2019 - |
题
我有一个名为“建筑”,它包含一个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
这是几乎可以肯定将是比“随机”的方式更容易和更快。再说,这可能还不够随机的。
不隶属于 StackOverflow