PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

seleção rápida de linhas aleatórias no Postgres


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.