zona7o
@zona7o
Веб-разработчик

Можно ли сделать это одним sql-запросом?

Есть авторы материалов.
У каждого автора есть по несколько записей.
Необходимо составить запрос, чтобы для каждого автора было выбрано по n записи (если их меньше — то сколько есть).
Как это сделать в несколько запросов я знаю, но в один никак не получается.
Думал в сторону GROUP_CONCAT, но на него нельзя наложить условие в ограничение количества выбираемых элементов. Возможно ли это вообще?
Всем спасибо за помощь!
  • Вопрос задан
  • 3002 просмотра
Пригласить эксперта
Ответы на вопрос 3
@rPman
Иногда бывает эффективнее заранее пронумеровать записи пользователей в отдельном поле (однократно старые данные и затем при добавлении и удалении записей заново перенумеровывать), тогда запрос станет очень простым:
select * from статьи t where t.номер<=:limit
Ответ написан
@ztxn
Можно

select * from статьи t
where :n > (select count(*) from статьи s where s.автор = t.автор and s.id<t.id)


Но решение с несколькими запросами с клиента будет куда производительнее.

Возможно тут еще как-то можно применить трюк с переменными…
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы