You might want to experiment with OFFSET
, as in
SELECT myid FROM mytable OFFSET floor(random()*N) LIMIT 1;
The N
is the number of rows in mytable
. You may need to first do a SELECT COUNT(*)
to figure out the value of N
.
Update (by Antony Hatchkins)
You must use floor
here:
SELECT myid FROM mytable OFFSET floor(random()*N) LIMIT 1;
Consider a table of 2 rows; random()*N
generates 0 <= x < 2
and for example SELECT myid FROM mytable OFFSET 1.7 LIMIT 1;
returns 0 rows because of implicit rounding to nearest int.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…