sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur applicerar man paginering på resultatet av en SQL-fråga med Joins?

Det är lustigt hur att skriva en fråga får dig att tänka och faktiskt hjälper mycket när du kan tänka dig en lösning på ditt eget problem.

Jag kunde lösa det här problemet genom att helt enkelt lägga till sidnumreringsdelen av frågan till en underfråga av min huvudfråga, snarare än till själva huvudfrågan.

Till exempel, istället för att göra:

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;

Jag gör så här:

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;

Hoppas detta hjälper andra människor också.



  1. MySQL-grupp efter rader i följd

  2. Varför får jag hela tiden ett 500-fel med min PHP?

  3. ORACLE NLS_LANG

  4. Count(*) fungerar inte korrekt