PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Имам нужда от функция за избиране на 88 произволни реда от таблица (без дубликати)

Ето едно бързо решение, което може да ви хареса:

CREATE EXTENSION IF NOT EXISTS tsm_system_rows;

     select * from task 
tablesample system_rows (88);

За справка TABLESAMPLE е в документите за SELECT:https://www. postgresql.org/docs/current/sql-select.html

Ето доста добър опис на функцията:

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

...и още един материал по общата тема за произволната извадка от същия автор:

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

tsm_system_rows е едно от двете стандартни разширения за вземане на проби, документирани тук:https:/ /www.postgresql.org/docs/current/tsm-system-rows.html

Хей! Радвам се, че зададохте този въпрос. Склонен съм да използвам метода на BERNOULLI, който е вграден в SELECT от кутията, но се основава на процент. Току-що изпробвах това и работи добре:

select * from task 
tablesample BERNOULLI (1)
limit 88



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как АКТУАЛИЗИРАТЕ и ИЗБЕРЕТЕ едновременно

  2. Различни timezone_types на DateTime обект

  3. Postgresql, Ограничете актуализацията на конкретни колони (само за четене)

  4. Какво е новото в PostgreSQL 12

  5. Грешка в SQLAlchemy без предоставена парола