oracle数据表查询某个字段的第二大值

2018-01-13 10:56:50来源:网络收集作者:纳米程序员人点击

分享

阿里云爆款

业务需求:


登陆后在页面显示该用户上次登录信息




实现逻辑:


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,仍不符合条件,所以都无数据返回。




最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台