2010-11-18 61 views
0

因此,查詢我試圖讓貌似現在這種權利:在過去的MySQL選擇日期:問題與MAX和GROUP BY

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

dates基本上保持與相關的DATETIME值start一份工作。
正如您可能猜到的那樣,jid是存儲在另一個表中的作業的ID。
作業可以有許多dates

我試圖做到的是找出哪些工作在過去所有的start日期。

我的想法是選擇start日期的最高值,按jid分組,如果它們在過去,這意味着與同一工作相關的所有其他日期也是過去的日期。

此查詢不起作用,因爲它正在檢查過去的start日期,然後選擇其中的最高日期。這並不排除將來可能會有同一份工作的日期。

我不知道我現在該怎麼辦。任何幫助或線索表示讚賞。

乾杯湯姆 -

回答

2

你必須使用具有:

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

HAVING行爲有點像在哪裏。它在之後篩選出行。通常(實際上,我想不出任何其他情況),你只能使用HAVING和聚合函數。

(我希望你在以後真的插入日期在你的桌子,雖然!)

+0

感謝,還有一個問題,爲什麼你說你希望我在將來的日期在我的表? – TomWilde 2010-11-19 00:12:38

+0

否則,這將不會返回任何內容(如果您有過去的日期) – 2010-11-19 03:43:38