Как обновить поля в таблице строками, случайно выбранными из известного списка?

StackOverflow https://stackoverflow.com/questions/449337

  •  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 " подход. Опять же, это может быть недостаточно случайно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top