PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

selezione rapida di righe casuali in Postgres

Potresti provare con OFFSET , come in

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

Il N è il numero di righe in mytable . Potrebbe essere necessario eseguire prima un SELECT COUNT(*) per calcolare il valore di N .

Aggiorna (di Antony Hatchkins)

Devi usare floor qui:

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

Considera una tabella di 2 righe; random()*N genera 0 <= x < 2 e ad esempio SELECT myid FROM mytable OFFSET 1.7 LIMIT 1; restituisce 0 righe a causa dell'arrotondamento implicito al più vicino int.