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

У меня есть таблица с именем "Buildings", которая содержит поле varchar (50) с именем "use". В таблице уже есть несколько тысяч записей, однако значения «use» равны нулю. Я хотел бы обновить эту таблицу со случайно выбранными значениями из списка строк (например, склад, офис, рынок, розничная торговля, мастерская) . Я также хотел бы оставить некоторые из них пустыми, чтобы имитировать использование в реальном мире.

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

Ответы [ 2 ]

8 голосов
/ 16 января 2009

Это может работать для вас:

BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
0 голосов
/ 16 января 2009

Это не случайно, но это хороший и простой способ сделать это, при условии, что у вас действительно равномерное распределение идентификаторов:

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

Это почти наверняка будет проще и быстрее, чем "случайный" подход. Опять же, это может быть недостаточно случайно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...