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行を返します。