2012-11-04 90 views
2

我選擇最近的一個MySQL表的項目有:由MAX(時間),時間選擇最近的MySQL行<= X

SELECT MAX(time) as most_recent, userID 
FROM TableName 
GROUP BY userID 
ORDER BY most_recent DESC 

我的問題是,如果我想限制的最大時間與:

WHERE time <= nnn 

該查詢不起作用了。有沒有子查詢的解決方案?

在此先感謝!

回答

0

使用HAVING子句,像這樣:

SELECT MAX(time) as most_recent, userID 
FROM TableName 
GROUP BY userID 
HAVING MAX(time) <= nnn 
ORDER BY most_recent DESC 
+0

Unfortunetely這不起作用。它將返回一個空的結果'用戶ID時間> nnn';我有多行具有相同的用戶ID,我想要最新的時間,但<= nnn – schlimpf

1

你可以用子查詢做到這一點:

select t.userID, max(t.time) 
from 
    (
    select userID, time 
    from tableName 
    where time <= nnn 
    ) t 
group by t.userID 

或者乾脆:

 select userID, max(time) 
    from tableName 
    where time <= nnn 
    group by userID 
+0

不幸的是,這是行不通的。它將返回一個空的結果'用戶ID時間> nnn';我有多行具有相同的用戶ID,我想要最新的時間,但<= nnn – schlimpf

+0

@ user1797670 - 你可以通過子查詢來完成。請參閱編輯。 –

+0

謝謝。我知道這是可能的一個子查詢,但即時通訊問是否沒有 – schlimpf