业务需求:
登陆后在页面显示该用户上次登录信息
实现逻辑:
1、首次登录 略
2、非首次登录,将操作日志表(sys_log)的登录时间字段(login_time varchar2(14))降序排列,取第二大值。
SQL脚本如下:
select *
from (select rownum r, login_time
from (select login_time from sys_log t order by login_time desc)
where rownum < 3) e
where e.r > 1;
常见错误脚本
select * from (select login_time from sys_log t order by login_time desc) where rownum>1 and rownum<3
错误原因
rownum是oracle预处理字段,默认标序是1,只有记录集中具有rownum字段条件后才会进行后续编号。
查询sys_log表时遍历第一条数据时rownum是1,不符合条件,继续遍历到第二条数据rownum仍为1,仍不符合条件,所以都无数据返回。