Учитывая эти записи:MySQL MAX() с GROUP BY
INSERT INTO `schedule_hours` (`id`, `weekday`, `start_hour`) VALUES
(1, 1, '09:00:00'),
(2, 2, '09:00:00'),
(3, 3, '09:00:00'),
(4, 4, '09:00:00'),
(5, 5, '09:00:00'),
(6, 6, NULL),
(7, 7, NULL),
(8, 1, '12:00:00');
Я бегу следующий запрос:
SELECT MAX(id), weekday, start_hour
FROM schedule_hours
GROUP BY weekday
ORDER BY weekday
Цель состоит в том, чтобы получить целую неделю (день недели 1-понедельник, 2-й день и т. Д.), Но верните последние записи.
Итак, в моем столе у меня теперь есть 2 записей для понедельника и 1 вход для остальной части дня, я только хочу, чтобы вернуть последние из них (идентификатора является полем приращения), правый результат должен быть:
8 1 12:00:00
2 2 09:00:00
3 3 09:00:00
4 4 09:00:00
5 5 09:00:00
6 6 NULL
7 7 NULL
Что я сейчас получаю:
8 1 09:00:00 < wrong
2 2 09:00:00
3 3 09:00:00
4 4 09:00:00
5 5 09:00:00
6 6 NULL
7 7 NULL
идентификатор и будний столбцы являются правильными, но первая строка показывает неправильный результат для столбца START_HOUR!
Это происходит потому, что в MySQL 'GROUP BY' отстой. – Kermit
@FreshPrinceOfSO Ну, тот факт, что OP не получил * ошибку *, заключается в том, что MySQL «GROUP BY» отстой. – IMSoP
Этот вопрос задан несколько раз в день. – Strawberry