使用ROWNUM做分页查询,页码,数据总条数错误问题

之前做页面查询数据的时候,根据日期排序以后出现了问题,本来数据库查出来数据应该是100条的,但是页面上的分页控件显示的总数为10,页数为1页

 select B.*
        from (
        select A.*,ROWNUM ROWNO,last_value(ROWNUM) over() as total from (
        select A.* from KHGL_JBXX A
        ) A  ORDER BY a.LRRQ DESC
        ) B
        where B.ROWNO between 0 and 20

查出来的结果是这样的:

  

   序号(rownum)       名称    录入日期 总数(total)
     1        111    2019/08/01    10
     3        222    2019/07/31    10
    10        333    2019/07/30    10

 

修改后:

select B.*
        from (
        select A.*,ROWNUM ROWNO,last_value(ROWNUM) over() as total from (
        select A.* from KHGL_JBXX A  ORDER BY a.LRRQ DESC
        ) A  
        ) B
        where B.ROWNO between 0 and 20

查出来的结果是这样的:

    序号 名称 录入日期 总数
1 111 2019/08/01 100
2 222 2019/07/31 100
3 333 2019/07/30 100
... ... ... 100
100 100 ... 100

 

综上所述:写查询语句的时候如果用到排序,应遵循一个原则:先排序,再分页

你可能感兴趣的:(SQL,分页)