因此,我正在尝试制作的查询现在看起来像这样:
SELECT `jid`, MAX(`start`) as `start` FROM `dates` WHERE `start` < NOW() GROUP BY `jid`
表格dates
基本上包含与作业相关联的DATETIME值start
正如您可能猜到的那样,jid
是作业的id,存储在另一个表中
一份工作可以有很多dates
我想要完成的是找出过去所有start
日期的工作。
我的想法是选择start
日期的最高值,按jid
分组,如果它们在过去,则意味着与同一作业相关的所有其他日期也在过去。
此查询无效,因为它检查过去的start
日期,然后选择其中最高的日期。这并不排除将来可能存在同一工作的另一个日期。
我不知道现在怎么办。任何帮助或线索都表示赞赏。
干杯 - 汤姆
答案 0 :(得分:2)
你必须使用HAVING:
SELECT jid, MAX(start) as start
FROM dates
GROUP BY jid
HAVING MAX(start) < NOW();
HAVING有点像WHERE。它会在选中后过滤掉行。通常(实际上,我不能想到任何其他情况),你只使用HAVING和聚合函数。
(我希望你以后真的在你的桌子上插入日期!)