Правильная разбивка на страницы в JOIN select

у меня есть инструкция SQL

select * 
from users u left join files f
on u.id = f.user_id
where f.mime_type = 'jpg'
order by u.join_date desc
limit 10 offset 10

отношение 1-N: пользователь может иметь много файлов.

это эффективно выбирает вторую 10-элементную страницу.

проблема в том, что этот запрос ограничивает / смещает объединенную таблицу, но я хочу ограничить / смещать отдельные строки с первого (users) таблица.

как? я нацелен на PostgreSQL и HSQLDB

1 ответов


сначала нужно ограничить выбор во внешней таблице, а затем присоединить зависимую таблицу к результату.

select * from (select * from users limit 10 offset 10)  as u
left join files f
   on u.id = f.user_id