如何使用时间插入第二行?

时间:2016-05-12 07:40:13

标签: sql oracle

当用户登录我的应用程序时,该行将插入登录日志表中。我想在用户登录系统时打印上次登录时间。我怎样才能获得最后的登录时间?

我已经尝试了max(time),但它给了我当前的登录时间,但我想要的是之前的。我怎么能得到这个?

这是我的问题:

select login_time
from tblname
where emp_code = 123
  and login_time = (select max(LOGIN_TIME)
                    from tblname
                    where emp_code = 123)

2 个答案:

答案 0 :(得分:3)

您可以使用ROW_NUMBER

WITH Cte AS(
    SELECT *,
        ROW_NUMBER() OVER(ORDER BY LOGIN_TIME DESC) AS rn
    FROM tblname
    WHERE emp_code = 123
)
SELECT LOGIN_TIME FROM CTE WHERE rn = 2

不使用CTE:

SELECT LOGIN_TIME 
FROM (
    SELECT *,
        ROW_NUMBER() OVER(ORDER BY LOGIN_TIME DESC) AS rn
    FROM tblname
    WHERE emp_code = 123
) t
WHERE rn = 2

您还可以使用Oracle ROWNUM

SELECT *
FROM (
    SELECT login_time
    FROM tblname
    WHERE emp_code = 123
    ORDER BY login_time DESC
) t
WHERE ROWNUM = 2

答案 1 :(得分:1)

尝试使用WHERE子查询,如下所示:

-webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);