#mysql #subquery #greatest-n-per-group
#mysql #подзапрос #наибольшее число на группу
Вопрос:
У меня есть простая таблица под названием «сообщение», состоящая из столбца «идентификатор» и столбца «дата». Может быть несколько идентификаторов с одинаковым значением. Я ищу запрос, который возвращает до трех по каждому идентификатору, и из этих трех они должны быть с наибольшими датами.
Таким образом, запрос выдал бы что-то вроде этого:
id | date
--- -------------------
36 2011-04-01 08:41:19
36 2011-04-17 08:05:18
36 2011-04-17 18:48:49
39 2011-03-31 05:45:15
39 2011-03-31 05:50:07
39 2011-03-31 05:56:23
41 2011-04-11 07:02:27
41 2011-04-19 02:31:31
41 2011-04-19 02:32:53
etc...
У меня возникли проблемы с выяснением этого.
Ответ №1:
select * from table as t1
where (select count(*) from table as t2
where t1.id = t2.id and t2.date > t1.date) < 3
order by id, date desc