sql >> Databáze >  >> RDS >> PostgreSQL

Potřebuji funkci pro výběr 88 náhodných řádků z tabulky (bez duplikátů)

Zde je rychlé řešení, které by se vám mohlo líbit:

CREATE EXTENSION IF NOT EXISTS tsm_system_rows;

     select * from task 
tablesample system_rows (88);

Pro informaci je TABLESAMPLE v dokumentech pro SELECT:https://www. postgresql.org/docs/current/sql-select.html

Zde je docela dobrý popis funkce:

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

...a další článek na obecné téma náhodného výběru od stejného autora:

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

tsm_system_rows je jedno ze dvou standardních vzorkovacích rozšíření, zdokumentovaných zde:https:/ /www.postgresql.org/docs/current/tsm-system-rows.html

Ahoj! Jsem rád, že jsi položil tuto otázku. Mám tendenci používat metodu BERNOULLI, která je zabudována do SELECTu hned po vybalení, ale je založena na procentech. Právě jsem to zkusil a funguje to dobře:

select * from task 
tablesample BERNOULLI (1)
limit 88



  1. Mysql Join 2 table a vyberte maximální a minimální hodnotu mezi časovým obdobím

  2. Získejte první, druhé, třetí nebo čtvrté pondělí v měsíci v SQLite

  3. PyMySQL pomocí nekoherentního chování localhost vs socket

  4. MySQL UUID(), když není jedinečné?