hello world!!!!!

写下自己的一些心得,写下自己问题的方式,写下程序之路的艰辛,希望能够有朝一日成为大牛。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

sql 分页语句 备忘

Posted on 2011-02-15 09:36  陈力  阅读(137)  评论(0编辑  收藏  举报
select   top   35   * 
from   TABLE1  
where  

        siteid
=3 and id  not in  
        (  
        
select   top   35   id   from   TABLE1   
        
where siteid=3 order   by   id  
        )  
)    
order   by   id  

--原理就是去掉 前(页码-1)*页面大小 个编号id ,尽管效率不高,但是有可行性

弊病:1   强制排序 
2   排序列必须是唯一列,否则分页情况不符实际 
3.   使用not   in,速度慢, 



 

 

下面一个就是利用他的一个利用唯一列 (id)编号来产生一个区间,必须要求是自增编号,效果不太好,不适用于搜索结果。

代码
select   top   页大小   * 
from   testtable 
where   ( 
 id 
>  
   (   
       
select   max(id)  
       
from   
       (  
          
select   top   页大小*页数   id   from   表 order   by   id   )   as   t 
       ) 
   )   
order   by   id 

--弊病:1   强制排序 
--
    2   排序列必须是唯一列,否则分页情况不符实际 

 

 

 欢迎大家拍转。