OFFSET
を試してみることをお勧めします 、
SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;
N
mytable
の行数です 。最初にSELECT COUNT(*)
を実行する必要がある場合があります N
の値を把握する 。
更新 (Antony Hatchkinsによる)
floor
を使用する必要があります ここ:
SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;
2行のテーブルを考えてみましょう。 random()*N
0 <= x < 2
を生成します たとえば、SELECT myid FROM mytable OFFSET 1.7 LIMIT 1;
最も近いintへの暗黙の丸めのため、0行を返します。