To zabawne, jak napisanie pytania skłania do myślenia i bardzo pomaga w wymyśleniu rozwiązania własnego problemu.
Udało mi się rozwiązać ten problem, po prostu dodając część zapytania dotyczącą stronicowania do podzapytania mojego głównego zapytania, a nie do samego zapytania głównego.
Na przykład zamiast robić:
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;
Robię to:
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;
Mam nadzieję, że to pomoże również innym ludziom.