Этот запрос не имеет смысла:
SELECT *
FROM db.table
GROUP BY id DESC;
Вы выполняете запрос агрегации.Итак (предположительно), таблица имеет несколько строк на id
.Они сгущаются до одного ряда.Какие значения следует использовать для других столбцов?Печально, что MySQL когда-либо поддерживал этот синтаксис.Таким образом, долгожданным изменением является то, что ONLY_FULL_GROUP_BY
теперь является значением по умолчанию.
Небольшой намек на то, что использование запроса агрегации без функций агрегирования является подозрительным.
Возможно, вы хотите:
select id, min(col1), min(col2), . . .
from t
group by id;
Или, более вероятно, вы хотите конкретную строку, такую как «самая ранняя» или «самая последняя», что-то вроде:
select t.*
from t
where t.createdAt = (select min(t2.createdAt) from t t2 where t2.id = t.id);