Oracle分页注意的问题

1.sql的编写

oracle数据库一mysql数据库分页的sql是不同的

  SELECT * FROM (
  --显示的字段
 SELECT ROWNUM rn,l.physicalip, l.hostname, l.service_level, l.business, l.os_version, l.bigeyeip FROM 
 
 (  select distinct t.*,b.bigeyeip from (
  --查询的sql
select t.physicalip,t.hostname,t.service_level,t.business,t.os_version from TITSM_configurationitem t where t.inserttime='2018-04-28') t 
   left join Ip_Script_Conf i on  t.physicalip=i.physicalip and  i.inserttime='2018-05-04'
   left join BIGEYE_CONF b on  b.id=i.bigeyeid
   
   left join Bigeye_Kscript k on  k.scriptID=i.scriptID
    left join CLOUDEYE_event c on  c.scriptName=k.scriptName
    
   where 1=1
    
  ) l WHERE #{page.endPos} >ROWNUM) t2 WHERE T2.rn >=#{page.startPos}

2.查询oracle的时候出现了一个比较蛋疼的问题,就是第一页显示的数据比后面显示的数据要少一条,研究过后发现,oracle的数据的第一条数据是从1开始的,不是从0开始的,

WHERE 10 >ROWNUM) t2 WHERE T2.rn >=0

显示的数据与

 

 
WHERE 10 >ROWNUM) t2 WHERE T2.rn >=1

显示的数据是一样的都是九条数据,所以在后台进行处理

将开始条数,与结束条数加1,完美解决问题

 

SELECT
            *
        FROM
            (
                SELECT
                    AUT .*, ROWNUM RN
                FROM
                    (
                        SELECT
                            *
                        FROM
                            AA_MSOTS_BD_BM
                        WHERE 1=1
                            
                    ) AUT
                WHERE
                    ROWNUM < 10)
        WHERE
            RN >=0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值