Сортировка групп данных по последней записи - PullRequest
0 голосов
/ 01 октября 2011

У меня есть таблица с двумя столбцами team и date. В столбце date указана дата добавления записи в таблицу.

Я хочу напечатать последние 10 записей каждой команды, отсортированные по date DESC. Я также хочу отсортировать эти группы записей команд по date DESC.

Я много чего перепробовал, но безуспешно. Это сработало, но с двумя запросами, что в данном случае неприемлемо.

Как я могу сделать это одним запросом? У меня такое чувство, что это действительно новый вопрос.

1 Ответ

1 голос
/ 01 октября 2011
SELECT rows.team, rows.date FROM (
  SELECT team, date,
    IF( @prev <> team, @rownum := 1, @rownum := @rownum+1 ) AS rownum,
    @prev := team
  FROM my_table
  JOIN (SELECT @rownum := NULL, @prev := 0) AS init
  ORDER BY team, date DESC
) AS rows
WHERE rownum <= 10

Мы создаем временную (виртуальную) таблицу в подзапросе со строками, упорядоченными командой, датой DESC и начинаем сверху, давая каждой строке порядковый номер строки, и при каждом изменении команды мы сбрасываем номер строки, затем в внешний запрос мы отфильтровываем любую строку с номером строки больше 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...