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.