首页 > 代码库 > 分页问题
分页问题
很长时间没有碰这些常规任务了,妈蛋 劳资一直在写文档~~~~~~~~~~~~
今天手痒,从测试分支上弄了一个代码写了个分页功能,跟开发人员那要了个任务,然后不亦乐乎的写程序,一开始我的分页是这样写的:
SELECT IN_MNO, CRD_NO, TRAN_CD, TRAN_AMT, REC_FEE_AMT, UUID, TRAN_DT, TRAN_TM FROM PTS.T_PTS_TRANDATA WHERE CRD_NO is not null and tran_cd in (‘10110001‘, ‘10110002‘, ‘10110005‘, ‘10110006‘, ‘10110008‘) and in_mno =‘800027844580005‘ and TRAN_DT >= ‘20141201‘ and TRAN_DT <= ‘20141231‘ and rownum > 0 and rownum <= 20 order by TRAN_DT desc, TRAN_TM desc;
妄图通过rownum来分页,事实证明这是不可取的;因为
rownum是查询过后才按顺序排的,假如你的条件是rownum>1;那么返回数据的第一条(rownum是1)就不符合要求了,然后第二条数据变成了现在的第一条,结果这一条rownum又变成1了又不符合要求了,以此类推 就没有返回结果。
如果想分页的话 是把rownum作为子表的一个字段(起个别名)。所以分页的时候是没有小于那一说的。fuck
修正后这样的完爆
select * from (SELECT A.*, ROWNUM RN FROM ( SELECT IN_MNO, CRD_NO, TRAN_CD, TRAN_AMT, REC_FEE_AMT, UUID, TRAN_DT, TRAN_TM FROM PTS.T_PTS_TRANDATA WHERE CRD_NO is not null and tran_cd in (‘10110001‘, ‘10110002‘, ‘10110005‘, ‘10110006‘, ‘10110008‘) and in_mno = ‘800027844580005‘ and TRAN_DT >= ‘20141201‘ and TRAN_DT <= ‘20141231‘ order by TRAN_DT desc, TRAN_TM desc ) A WHERE ROWNUM <= 30 order by TRAN_DT desc, TRAN_TM desc) WHERE RN > 20;
分页问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。