系统框架:spring + springMVC + mybatis
数据库:oracle11
问题描述:分页查询:pagesize:20,数据一共有36行,第一页出来数据没问题,点击下一页时,数据并不是第21-36行的数据,从控制台找到sql,拿到plsql执行能够正确查出第21-36行数据,但是通过系统去执行获取的数据中有包含了前20行的3行数据,出来的数据依然是16行,且,出来的数据顺序有点乱。
点击下一页的sql;
select *
from (select row_.*, rownum rownum_
from (SELECT *
FROM APP_PKG_DISCNT_DEF t
WHERE 1 = 1
AND t.PKG_ID = 'ARREARAGE_M'
AND t.PARENT_DISCNT_CODE = '000001') row_) temp_
where rownum_ > 20
and rownum_ <= 40
解决方法:加上order by 。
不解之处:在未加上order by 之前,同样的sql在系统中执行和在plsql执行查询的结果不一致。