我有這個表:MYSQL獲得最新的就業數字
TableNumber(Int 0 to 25)|Name(varchar 100)|Project(varchar 15)|StartDate(Datetime)
1 |David |P1 |'2015-02-06 08:00:00'
2 |Sebastien |P2 |'2015-02-06 08:00:00'
1 |David |P4 |'2015-02-06 12:00:00'
2 |Sebastien |P3 |'2015-02-07 08:00:00'
而且我希望得到最新的工作的每個人在一組一天。
我想有:
TableNumber(Int 0 to 25)|Name(varchar 100)|Project(varchar 15)|StartDate(Datetime)
2 |Sebastien |P2 |'2015-02-06 08:00:00'
1 |David |P4 |'2015-02-06 12:00:00'
所以我想排除,因爲它不是「2015年2月6日」 P3和我想排除P1導致其不是最新的工作爲大衛(其P4 )。
請考慮NOW()在以下示例中返回'2015-02-06 15:00:00'。
這裏是我的嘗試:
SELECT * FROM MyTable WHERE DATEDIFF(startdate, NOW()) = 0 ORDER BY tablenum DESC;
但這只是排除P3
所以,我想這個代替:
SELECT * FROM MyTable AS p WHERE DATEDIFF(p.startdate, NOW()) = 0 AND TIMEDIFF(p.startdate, NOW()) = (SELECT MAX(TIMEDIFF(p2.startdate, NOW())) FROM MyTable AS p2 WHERE p2.startdate = p.startdate) ORDER BY tablenum DESC;
,但它仍然不排除P1。
任何人都知道我能做到這一點嗎? BTW開始日期將永遠是一個圓形小時(08:00:00或12:00:00或22:00:00 ...)
UPDATE
是的,因爲它不是很清楚什麼我想我會在這裏澄清:
我需要知道每個人工作的最後一個項目。
所以在我的表中,我需要知道Sebastien在第2號表上的P2上工作,David在P4表上工作。我不想P1,因爲它不是大衛工作的最後一個項目(由最後一個項目我還包括他現在正在開發的項目)。我也想排除未來的一切,因此P3(明天是誰)不得顯示。
[SQL選擇只在色譜柱的最高值的行(可能重複http://stackoverflow.com/問題/ 7745609/sql-select-only-rows-with-max-value-on-a-column) – 2015-02-06 20:51:44
'select user,max(startdate)... group by user'? – 2015-02-06 20:51:49
最近,我瞭解了「最遲」的項目(從您的問題的上下文中) – Tarik 2015-02-06 21:10:09