PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

sélection rapide de lignes aléatoires dans Postgres

Vous voudrez peut-être expérimenter avec OFFSET , comme dans

SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;

Le N est le nombre de lignes dans mytable . Vous devrez peut-être d'abord faire un SELECT COUNT(*) pour déterminer la valeur de N .

Mettre à jour (par Antony Hatchkins)

Vous devez utiliser floor ici :

SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;

Considérons un tableau de 2 lignes; random()*N génère 0 <= x < 2 et par exemple SELECT myid FROM mytable OFFSET 1.7 LIMIT 1; renvoie 0 lignes en raison de l'arrondi implicite à l'entier le plus proche.