Как обновить поля в таблице строками, случайно выбранными из известного списка?
-
19-08-2019 - |
Вопрос
У меня есть таблица с именем " здания " содержит поле varchar (50) с именем " используйте " ;. В таблице уже есть несколько тысяч записей, однако & Quot; используйте & Quot; все значения равны нулю. Я хотел бы обновить эту таблицу с помощью случайно выбранных значений из списка строк (например, склад, офис, рынок, розничная торговля, мастерская) . Я также хотел бы оставить некоторые из них пустыми, чтобы имитировать использование в реальном мире.
Как я могу обновить поле в таблице со строками, случайно выбранными из известного списка?
Решение
Это может сработать для вас:
BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
Другие советы
Это не случайно, но это хороший и простой способ сделать это при условии, что у вас действительно равномерное распределение идентификаторов:
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
Это почти наверняка будет проще и быстрее, чем " random " подход. Опять же, это может быть недостаточно случайно.