@jekahm

Проблема с GROUP BY в MySQL 5.7.11 и выше?

Доброго времени суток!
Есть таблица, элементы которой нужно сгруппировать по полю type, но чтобы в результат попадала запись с наибольшим id.
Написал такой запрос. В MySQL версии 5.5 всё работало (sqlfiddle.com/#!2/a1893a/2/0). Но уже в 5.7.11(12) этого не происходит. Изменение в конфиге значения sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION (без ONLY_FULL_GROUP_BY) также не помогает
SELECT temp.* FROM (SELECT * FROM test_materials ORDER BY id DESC) as temp GROUP BY temp.type;

Линк на "песочницу" для версии 5.7 rextester.com/FGY56704 (результат внизу страницы)

Заранее благодарен!
  • Вопрос задан
  • 851 просмотр
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
То, что в 5.5 это работало - вам просто повезло. MySQL никогда не гарантировал выборку конкретной строки при GROUP BY.
SELECT * 
  FROM (
    SELECT MAX(`id`) AS `id` FROM `test_materials` GROUP BY `type`
  ) AS `m`
  JOIN `test_materials` AS `tm` ON `tm`.`id` = `m`.`id`
Ответ написан
@jekahm Автор вопроса
Хорошая статья по данной тематике sqlinfo.ru/articles/info/18.html
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы