SELECT ROWNUM aa,a.* FROM tc_jfa_file a WHERE tc_jfadate = to_date('16/05/19','yy/mm/dd' AND ROWNUM=2 ) ORDER BY tc_jfa02
ROWNUM=2 这样查询是没有数据的
原因:ROWNUM是一个伪列。该值在被读入cache中时被分配了一个值。每次查询该值都可能变化。同样的一行记录,可能由于读入cache中的行数不同,而导致ROWNUM不同。
解决方案:
可以这样写:SELECT * FROM (SELECT ROWNUM num,a.* FROM tc_jfa_file a WHERE tc_jfadate = to_date('16/05/19','yy/mm/dd') ORDER BY tc_jfa02) a WHERE a.num=2
另外:以下来源 http://blog.csdn.net/yihuiworld/article/details/44701827
、取第一条数据/前几条数据:你是否在用ORDER BY 和 rownum=1 / rownum<xx 来SQL
特别说明:上面提供的demo中有2条slip=201308的数据,且item分别为1、2,其中item=2的先插入数据库,再插入item=1的数据
SQL应该如下这样写:
如上sql SELECT * FROM (SELECT a.* FROM tc_jfa_file a WHERE tc_jfadate = to_date('16/05/19','yy/mm/dd' ) ORDER BY tc_jfa02) a WHERE ROWNUM=1,也就是子查询不需要rownum查询