Você pode querer experimentar com
OFFSET
, como em SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;
O
N
é o número de linhas em mytable
. Você pode precisar primeiro fazer um SELECT COUNT(*)
para descobrir o valor de N
. Atualizar (por Antony Hatchkins)
Você deve usar
floor
aqui:SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;
Considere uma tabela de 2 linhas;
random()*N
gera 0 <= x < 2
e por exemplo SELECT myid FROM mytable OFFSET 1.7 LIMIT 1;
retorna 0 linhas devido ao arredondamento implícito para o int mais próximo.