这真是一个大坑,rownum=1能正常返回,而rownum=2则总是返回空,而不是值为 null 的一行
解决方法很简单,先通过in (1,2)
得到2行数据经过order by rownum desc
执行下面会发现返回2行数据并且是倒叙的,根据rownum=1能获取到数据,那么返回第一行第二行数据后,将其倒叙,那么原先第二行就成了现在的第一行,然后再根据子查询 rownum=1就可以得到第二行数据
select * from my_table where rownum in (1,2) order by desc;
完整的sql如下:
select * from (select * from my_table where rownum in (1,2) order by desc) where rownum = 1;