选择除最新行之外的所有行

时间:2010-11-17 09:50:35

标签: mysql

我有一个表来存储客户端的登录历史记录。其中一个捕获的字段是时间戳。我正在尝试编写一个查询来获取用户登录历史记录中的最后一行。

我认为这样的事情应该有效:

SELECT * FROM LoginHistory L 
WHERE USER_ID like 'testuser@company.com' 
HAVING L.TIMESTAMP < MAX(L.TIMESTAMP);

这似乎只选择了第一行。知道为什么会这样,以及如何正确地做到这一点?

由于

2 个答案:

答案 0 :(得分:0)

我认为你所寻找的并不等于MAX -

SELECT * FROM LoginHistory L 
WHERE USER_ID like 'testuser@company.com'
AND L.TIMESTAMP <> ( 
    select MAX(L.TIMESTAMP) fromLoginHistory 
    where USER_ID like 'testuser@company.com'
)

答案 1 :(得分:0)

试试这个:

SELECT * FROM LoginHistory L 
WHERE USER_ID = 'testuser@company.com' 
AND L.TIMESTAMP < (SELECT MAX(TIMESTAMP) FROM LoginHistory WHERE USER_ID = 'testuser@company.com');