Може да искате да експериментирате с OFFSET
, както в
SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;
N
е броят на редовете в mytable
. Може да се наложи първо да направите SELECT COUNT(*)
за да разберете стойността на N
.
Актуализиране (от Антони Хачкинс)
Трябва да използвате 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;
връща 0 реда поради имплицитно закръгляване до най-близкото цяло.