Wie aktualisiere ich ein Feld in der Tabelle mit Strings zufällig aus einer bekannten Liste ausgewählt?
-
19-08-2019 - |
Frage
Ich habe eine Tabelle mit dem Namen „Gebäude“, die eine varchar (50) Feld „Verwendung“ enthält. Die Tabelle hat bereits mehrere tausend Datensätze, aber die „Verwendung“ Werte sind alle null. Ich möchte diese zum Aktualisieren dieser Tabelle mit zufällig ausgewählten Werte aus einer Liste von Strings (z. B. Lager, Büro, Markt, Handel, Werkstatt) . Ich möchte auch einige dieser null verlassen realen Welt Nutzung zu emulieren.
Wie kann ich ein Feld in einer Tabelle aktualisieren mit Strings zufällig aus einer bekannten Liste ausgewählt?
Lösung
Dies könnte für Sie arbeiten:
BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
Andere Tipps
Es ist nicht zufällig, aber das ist eine schöne und einfache Möglichkeit, es zu tun, sofern Sie eine realtively gleichmäßige Verteilung von IDs haben:
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
Das wird mit ziemlicher Sicherheit einfacher und schneller sein als ein „random“ -Ansatz. Dann wieder, ist es vielleicht nicht zufällig genug sein.