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

Hvordan anvender man paginering på resultatet af en SQL-forespørgsel med Joins?

Det er sjovt, hvordan det at skrive et spørgsmål får dig til at tænke, og det hjælper faktisk meget med at forestille dig en løsning på dit eget problem.

Jeg var i stand til at løse dette problem ved blot at tilføje pagineringsdelen af ​​forespørgslen til en underforespørgsel af min hovedforespørgsel i stedet for til selve hovedforespørgslen.

For eksempel i stedet for at gøre:

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;

Jeg gør dette:

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;

Håber dette også hjælper andre mennesker.



  1. Standardadgangskode for mysql i ubuntu-server 16.04

  2. Sådan tilføjer du antal arbejdsdage til en given dato

  3. Opdeling af afgrænsede værdier i en SQL-kolonne i flere rækker

  4. Adgang nægtet for brugeren 'user'@'localhost' på MySQL