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

Làm thế nào để áp dụng phân trang cho kết quả của một truy vấn SQL với Joins?

Thật buồn cười khi viết một câu hỏi khiến bạn phải suy nghĩ và thực sự giúp ích rất nhiều trong việc hình dung ra giải pháp cho vấn đề của chính bạn.

Tôi đã có thể giải quyết vấn đề này bằng cách chỉ cần thêm phần phân trang của truy vấn vào truy vấn phụ của truy vấn chính của tôi, thay vì vào chính truy vấn chính.

Ví dụ:thay vì làm:

SELECT client.id, client.name ...
FROM clients AS client
LEFT JOIN client_account_types AS cat ON client.id = cat.client_id
FULL JOIN account_types AS at ON cat.account_type_id = at.id
ORDER BY client.name ASC
LIMIT 10 OFFSET 30;

Tôi đang làm điều này:

SELECT client.id, client.name ...
FROM (
    SELECT * FROM clients
    ORDER BY name ASC
    LIMIT 10 OFFSET 0
) AS client
LEFT JOIN client_account_types AS cat ON client.id = cat.client_id
FULL JOIN account_types AS at ON cat.account_type_id = at.id;

Hy vọng điều này cũng giúp ích cho những người khác.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gói PGLogical 1.1 cho PostgreSQL 9.6beta1

  2. Postgres trả về giá trị mặc định khi một cột không tồn tại

  3. Postgres chỉ mục nhiều cột duy nhất cho bảng tham gia

  4. Nội suy giữa hai giá trị trong một truy vấn

  5. kubernetes timescaledb statefulset:Các thay đổi bị mất khi giải trí pod