PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

schnelle zufällige Zeilenauswahl in Postgres

Vielleicht möchten Sie mit OFFSET experimentieren , wie in

SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;

Das N ist die Anzahl der Zeilen in mytable . Möglicherweise müssen Sie zuerst SELECT COUNT(*) ausführen um den Wert von N herauszufinden .

Aktualisieren (von Antony Hatchkins)

Sie müssen floor verwenden hier:

SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;

Stellen Sie sich eine Tabelle mit 2 Zeilen vor; random()*N erzeugt 0 <= x < 2 und zum Beispiel SELECT myid FROM mytable OFFSET 1.7 LIMIT 1; gibt 0 Zeilen zurück, da implizit auf die nächste Ganzzahl gerundet wird.