110 votes

Postgres BOUCLE FOR

Je tente d'obtenir 25 échantillons aléatoires de 15 000 identifiants d'une table. Au lieu d'appuyer manuellement sur exécuter à chaque fois, j'essaie de faire une boucle. Ce qui n'est pas l'utilisation optimale de Postgres, mais c'est l'outil que j'ai. Voici ce que j'ai fait jusqu'à présent :

pour i de 1 à 25 LOOP
   insérer dans playtime.meta_random_sample
   sélectionnez i, ID
   de     tbl
   ordre  par random() limiter 15000
boucle terminée

0voto

Jian He Points 69

En utilisant la procédure.

CREATE or replace PROCÉDURE pg_temp_3.insert_data()
LANGAGE SQL
DÉBUT ATOMIQUE
INSÉRER DANS meta_random_sample(col_serial, parent_id)
SÉLECTIONNER t.*
À PARTIR DE generate_series(1,25) i
CROISER JOINDRE LATÉRALEMENT (
   SÉLECTIONNER i, parent_id
   À PARTIR DE parent_tree order by random() limit 2
   ) t;
FIN;

Appeler la procédure.

call pg_temp_3.insert_data();

Manuel PostgreSQL: https://www.postgresql.org/docs/current/sql-createprocedure.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X