Możesz poeksperymentować z OFFSET
, jak w
SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;
N
to liczba wierszy w mytable
. Być może trzeba będzie najpierw wykonać SELECT COUNT(*)
aby obliczyć wartość N
.
Aktualizacja (autorstwa Antony'ego Hatchkinsa)
Musisz użyć floor
tutaj:
SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;
Rozważ tabelę z 2 rzędami; random()*N
generuje 0 <= x < 2
i na przykład SELECT myid FROM mytable OFFSET 1.7 LIMIT 1;
zwraca 0 wierszy z powodu niejawnego zaokrąglenia do najbliższej liczby całkowitej.