2012-11-04 113 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