У меня проблема с моим запросом GROUP BY (самый сложный из них, по крайней мере, для меня).GROUP BY - сортировка до и после группировки
Что я хочу сделать, это получить последние измененные записи, сгруппированные по другому столбцу. Проблема в том, что группировка возвращает единственную первую найденную ею запись (в группе) без учета ORDER BY (кроме случаев, когда возвращается окончательный результат).
Вот упрощенная версия моего кода.
SELECT events.id, events.name, events.type, events.modified_time
FROM events
GROUP BY events.type
ORDER BY event.modified_time DESC
который будет возвращать:
1 | Event One | Birthday | Jan 1, 2012
2 | Event Two | Graduation | Jan 1, 2012
Когда на самом деле есть третья запись с измененным временем, которое позже:
3 | Event Three | Birthday | Jan 2, 2012
Я попытался с помощью предложения HAVING из MAX (modified_time), но он также не возвращает правильные результаты. Возможно, мне просто нужно обсудить это с кем-то, кто хорошо осведомлен, но если вопрос имеет достаточный смысл, и вы можете сказать, что мне нужно, тогда, возможно, есть простой ответ.
БОНУС ВОПРОС:
Можно ли сделать это без подзаголовка?
Не можете ли вы добавить 'events.modified_time' в предложение GROUP BY? –
@Lieven Тогда я получу 3 записи, когда я действительно хочу 2 последних. – Matthew
ORDER BY не повлияет на GROUP BY, если хотите, а скорее только на окончательную сортировку. –