PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tôi cần một hàm để chọn 88 hàng ngẫu nhiên từ một bảng (không có bản sao)

Đây là một giải pháp nhanh chóng mà bạn có thể thích:

CREATE EXTENSION IF NOT EXISTS tsm_system_rows;

     select * from task 
tablesample system_rows (88);

Để tham khảo, TABLESAMPLE có trong tài liệu cho SELECT: https:// www. postgresql.org/docs/current/sql-select.html

Đây là một bản ghi khá tốt về tính năng:

https://www.2ndquadrant.com/ vi / blog / tableample-in-postgresql-9-5-2 /

... và một tác phẩm khác về chủ đề lấy mẫu ngẫu nhiên chung của cùng một tác giả:

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

tsm_system_rows là một trong hai phần mở rộng lấy mẫu tiêu chuẩn, được ghi lại tại đây: https:/ /www.postgresql.org/docs/current/tsm-system-rows.html

Chào! Tôi rất vui vì bạn đã hỏi câu hỏi này. Tôi có xu hướng sử dụng phương pháp BERNOULLI, được tích hợp sẵn trong SELECT ngoài hộp, nhưng nó dựa trên tỷ lệ phần trăm. Tôi vừa thử cái này và nó hoạt động tốt:

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. khi nào thì ngắt kết nối và khi nào thì kết thúc ứng dụng khách pg hoặc nhóm

  2. Truy xuất số lượng hàng và trả về 0 khi không có hàng

  3. Sự khác biệt giữa kết thúc và hủy bỏ một quy trình

  4. So sánh các kiểu cột cơ sở dữ liệu trong MySQL, PostgreSQL và SQLite? (Bản đồ chéo)

  5. Làm cách nào để viết lại câu lệnh SELECT ... CROSS JOIN LATERAL ... cho các phiên bản PostgreSQL cũ hơn?