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.