Это означает, что в итоговом выводе имеют смысл только поля field_1 (потому что отбирается единственное значение) и field_2, field_3 (потому что входят в выражение группировки). Все остальные поля недоступны, и их неагрегированные значения не имеют смысла, потому что возвращается только одно из всех значений в группе, причём выбранное в высшей степени отфонарно - да и то, исключительно благодаря расширению синтаксиса, имеющемуся в MySQL, и отключенному ONLY_FULL_GROUP_BY.
Akina, я вас понял, вы наверное имеете ввиду что в группировку нужно добавить field_5? Но как тогда быть, если указывая это поле я получу больше данных чем нужно?!
Используйте GROUP_CONCAT(ID order by field_5)
Так вы получите в значении список с первым елементом ID нужной вашей строки. Ну а дальше ищите по этому ID все данные
Akina, это задача по типу такой. Есть таблица с постами. Там все посты от всех пользователей, включая его id. Мне нужно получить последний пост каждого из пользователей. Соответственно группировка это по пользователям, а сортировка это получить первый или последний пост каждого из них. Подскажите как можно такое сделать?
NewSantaClaus, Тогда только подзапрос, который для каждого пользователя получит максимальный штамп времени, и использование этих данных в качестве условия отбора по другой копии таблицы.
SELECT t1.*
FROM table AS t1
NATURAL JOIN (
SELECT user_id, MAX(timestamp) AS timestamp
FROM table AS t2
GROUP BY 1
) AS t3
Если вдруг для юзера время может иметь дубликаты - будут выведены все соотв. записи.