sql >> Database teknologi >  >> RDS >> PostgreSQL

Jeg har brug for en funktion til at vælge 88 tilfældige rækker fra en tabel (uden dubletter)

Her er en hurtig løsning, som du måske kunne lide:

CREATE EXTENSION IF NOT EXISTS tsm_system_rows;

     select * from task 
tablesample system_rows (88);

Til reference er TABLESAMPLE i dokumenterne for SELECT:https://www. postgresql.org/docs/current/sql-select.html

Her er en ganske god beskrivelse af funktionen:

https://www.2ndquadrant.com/ da/blog/tablesample-in-postgresql-9-5-2/

...og endnu et stykke om det generelle emne om stikprøver af samme forfatter:

https://www. 2ndquadrant.com/en/blog/tablesample-and-other-methods-for-getting-random-tuples/

tsm_system_rows er en af ​​to standard sampling-udvidelser, dokumenteret her:https:/ /www.postgresql.org/docs/current/tsm-system-rows.html

Hej! Jeg er glad for, at du stillede dette spørgsmål. Jeg plejer at bruge BERNOULLI-metoden, som er indbygget i SELECT ud af boksen, men den er baseret på en procentdel. Jeg har lige prøvet dette, og det fungerer fint:

select * from task 
tablesample BERNOULLI (1)
limit 88



  1. MySQL-ydelse:MyISAM vs InnoDB

  2. MySQL's HEX() og UNHEX() ækvivalent i Postgres?

  3. mysql-forespørgsel med Yii-forespørgselsbygger

  4. utf8mb4 indstilling for talent - virker ikke