MySQL Выбрать даты в прошлом: проблема с MAX и GROUP BY - PullRequest
0 голосов
/ 19 ноября 2010

Итак, запрос, который я пытаюсь сделать, выглядит сейчас так:

SELECT `jid`, MAX(`start`) as `start` FROM `dates` WHERE `start` < NOW() GROUP BY `jid`

Таблица dates в основном содержит значение DATETIME start, связанное с заданием.
КакВы, наверное, догадались, jid - это идентификатор задания, хранящийся в другой таблице.
В задании может быть много dates

Я пытаюсь выяснить, какие задания естьвсе их start даты в прошлом.

Я думал выбрать самые высокие значения дат start, сгруппированных по jid, и если бы они были в прошлом, это означало бы, что все другие даты, связанные с той же работой, также находятся впрошлое.

Этот запрос не работает, так как он проверяет даты start в прошлом и затем выбирает самые высокие из них.Это не исключает возможности другой даты для той же работы, лежащей в будущем.

Я понятия не имею, как я мог бы продолжить сейчас.Приветствуется любая помощь или подсказка.

Приветствия - Том

1 Ответ

2 голосов
/ 19 ноября 2010

Вы должны использовать HAVING:

SELECT jid, MAX(start) as start
FROM dates
GROUP BY jid
HAVING MAX(start) < NOW();

HAVING действует так же, как WHERE.Он отфильтровывает строки после они были выбраны.Обычно (и на самом деле я не могу думать ни о каком другом случае), вы используете HAVING только с агрегатными функциями.

(я надеюсь, что вы действительно добавили даты в свою таблицу в будущем!)

...