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.