MySQL选择过去的日期:MAX和GROUP BY问题

时间:2010-11-18 23:51:26

标签: mysql datetime group-by max

因此,我正在尝试制作的查询现在看起来像这样:

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

表格dates基本上包含与作业相关联的DATETIME值start 正如您可能猜到的那样,jid是作业的id,存储在另一个表中 一份工作可以有很多dates

我想要完成的是找出过去所有start日期的工作。

我的想法是选择start日期的最高值,按jid分组,如果它们在过去,则意味着与同一作业相关的所有其他日期也在过去。

此查询无效,因为它检查过去的start日期,然后选择其中最高的日期。这并不排除将来可能存在同一工作的另一个日期。

我不知道现在怎么办。任何帮助或线索都表示赞赏。

干杯 - 汤姆

1 个答案:

答案 0 :(得分:2)

你必须使用HAVING:

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

HAVING有点像WHERE。它会在选中后过滤掉行。通常(实际上,我不能想到任何其他情况),你只使用HAVING和聚合函数。

(我希望你以后真的在你的桌子上插入日期!)