You может использовать GROUP BY
, но важно понять, как это работает.
Когда вы используете GROUP BY
, группа строк сворачивается в одну и то, что отображается в других столбцах, которые не используются в вашем предложении GROUP BY
, определяется либо с помощью агрегатных функций, либо это случайная строка из этой группы , Вы не можете быть уверены в том, что строка, соответствующая отображаемой строке, будет содержать значение MAX()
или любую другую функцию, которую вы использовали. Это становится особенно очевидным, когда вы делаете запрос типа:
SELECT id, MIN(whatever), MAX(whatever), another_column
FROM your_table
GROUP BY id
«another_column» может принадлежать к строке, содержащей значение MIN() или значение MAX() или даже в другой строке не отображается вообще. В других СУБД, кроме MySQL, фактически запрещается выбирать столбцы, которые не используют агрегированную функцию, или не указаны в предложении GROUP BY
, просто чтобы пользователи не ошиблись или считают, что они получили правильный результат.
Итак, в вашем случае вы, похоже, хотите также отобразить столбец «значение». По вышеуказанным причинам ответ juergen_d неверен, потому что он не выбирает «значение», и если бы это было так, вы не можете быть уверены, что это правильное «значение». Ответ Филипе Сильвы неверен, потому что он группируется по «ценности». Выполнение этого в вашем случае фактически вернет всю таблицу. Ответ Ромеша неверен, потому что, используя в два раза функцию MAX()
, вы получите максимальные значения, но не значение, соответствующее значению даты и времени.
Итак, как вам это сделать? Here 3 ways are described. Изучите их, применив их самостоятельно. Это не так сложно :)
Дубликат [Получить последнюю дату из сгруппированных данных MySQL] (http://stackoverflow.com/questions/8470311/get-the-latest-date-from-grouped-mysql-data) , но ответ fancyPants здесь лучше, чем ответы в старом вопросе. –