4

「use」という名前の varchar(50) フィールドを含む「Buildings」という名前のテーブルがあります。テーブルにはすでに数千のレコードがありますが、「使用」値はすべて null です。これらのテーブルを、文字列のリスト(例: 倉庫、オフィス、市場、小売、ワークショップ)からランダムに選択された値で更新したいと思います。また、実際の使用法をエミュレートするために、これらの null の一部を残しておきたいと思います。

既知のリストからランダムに選択された文字列でテーブルのフィールドを更新するにはどうすればよいですか?

4

2 に答える 2

8

これはあなたのために働くかもしれません:

BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
于 2009-01-16T06:00:01.137 に答える
0

これはランダムではありませんが、ID の分散が非常に均一である場合は、次のように簡単に行うことができます。

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

これはほぼ間違いなく、「ランダム」なアプローチよりも簡単で高速です。繰り返しますが、十分にランダムではない可能性があります。

于 2009-01-16T02:52:54.353 に答える