Добрый день.
Как всегда, хочется странного. Есть таблица, содержащая поля: дата_сеанса, номер_телефона, полученные_данные, индекс. Номеров телефона уникальных 20 штук, каждый из них может звонить в случайное время. Что хочу? Хочу сделать VIEW, в котором будут храниться только последние по времени сеансы для каждого номера. Как такое можно сделать? Для получения самого последнего сеанса я делал так:
CREATE VIEW `last_data` AS
select
`date` AS `date`,
`phone` AS `phone`,
`data` AS `data`
from `monitoringtable`
order by `index` desc limit 1;
Но это просто. А вот как получить то, что требуется сейчас? Если отсортировать по дате, а затем по номеру телефона, а затем взять последние 20, то может получиться, что некоторые номера туда не попадут, потому что у них слишком давно был сеанс. Делать VIEW для каждого номера отдельно тоже расточительно.