2014-09-09 2 views
0

У меня возникли проблемы с запросом, я пытаюсь отфильтровать все повторяющиеся строки с помощью max (DATE).Использование MAX() для получения всех последних дат из запроса

Мой запрос состоит в следующем -

$sql = "select COND_CODE,COUNT(*) as COUNT, COND_CODE, MAX(DATE) from downgrades 
WHERE (
    SELECT MAX(DATE) BETWEEN '15/05/2014 05:19' AND '30/05/2014 12:34' from downgrades) 
    GROUP BY COND_CODE"; 

Запрос вытягивать данные, но единственным результатом он на самом деле дает это самая последняя дата в таблице.

COND_CODE  DATE  
SW    21/05/2014 07:57 
SW    21/05/2014 07:59 
SW    22/05/2014 09:05 
SW    22/05/2014 09:06 
SM    27/05/2014 06:49 
SM    27/05/2014 06:49 
SM    30/05/2014 05:18 

Вопрос, указанный выше, даст только один результат - SM 30/05/2014 05:18.

Мне нужно, чтобы показать последний результат для каждого COND_CODE, фильтруя последнюю дату.

Так в идеале я хотел бы получить SM 30/05/2014 5:18 & SW 22/05/2014 09:06

Надеется, что это имеет смысл,

Благодарность

+0

Это MySQL. Это не даты ... – Strawberry

+0

Как это не даты? Они преобразуются из штампа времени julian .... – Engl12

+0

Даты в SQL должны быть расшифрованы для типов данных DATE или DATETIME - YYYY-MM-DD h: i: s – Strawberry

ответ

-1

Как это?

SELECT COND_CODE,COUNT(*) as COUNT, COND_CODE, MAX(DATE) 
FROM downgrades 
GROUP BY COND_CODE 
HAVING MAX(DATE) BETWEEN '15/05/2014 05:19' AND '30/05/2014 12:34' 
+0

Спасибо, попробовал это, но получил те же результаты, что и я. – Engl12

+0

Это должно работать лучше: SELECT Code, MAX (Дата) ОТ 'downgrades' GROUP BY Код ИМЕЕТ МАКС. (Дата) BETWEEN '2014-05-15 05:19' AND '2014-05-30 12:34' , Предполагая, что ваше поле DATE действительно имеет тип mysql 'datetime'. Я сам это испытал и результаты, как вы указали. – Myrddin81

Смежные вопросы