@Malkolm163

Как сформировать sql запрос?

Есть 2 таблицы: авторы и книги. В таблице книг есть поле с id автора.
Помогите сформировать запрос, чтобы 1 запросом как то получить из таблицы книг по 5 последних книг для каждого автора.
Получать отдельными запросами не вариант, потому что за раз может быть запрошено 100~200 авторов...
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для MySQL 8.0.2 и выше:
SELECT `a`.`name` AS `author_name`, `b`.`name` AS `book_name`
  FROM (
    SELECT `author_id`, `name`, 
           ROW_NUMBER() OVER (PARTITION BY `author_id` ORDER BY `id` DESC) AS `row`
      FROM `books`
  ) AS `b`
  JOIN `authors` AS `a`
    ON `b`.`row` < 6 AND `a`.`id` = `b`.`author_id`
  WHERE `a`.`id` IN (список id)
  ORDER BY `a`.`name`, `b`.`name`
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы