225025 发表于 2016-11-1 05:11:53

sql server分页的一种写法

  sql server分页的一种写法
  根据一位网友写的SQL加以记录:
  
  select top pageSize * from 表名
  
  where id not in
  (
  select top (pageNo-1)*pageSize id from 表名
  )
  
  pageSize:每页记录数
  pageNo: 第几页 
  
  举例:假如 每页要显示 5条  要显示第三页
  也就是 pageSize= 5
                  pageNo=3
  
  (pageNo-1)*pageSize = (3-1)*5 = 2*5 
  这的意思就是得到前两页

not in (............)
就是不显示前两页
  
  从前两页的数据 往后 显示 pageSize 条数据
  
  综上所述SQL为:pageNo =3  pageSize=5
                        (pageNo-1)*pageSize= 2*5=10
  
  select top 5 * from 表名 where id not in(select top 10 id from 表名)
  
  
  还有一种类似于这样的写法:
  
  即
  select top pageSize * from 表名
  
  where id not in
  (
  select top pageNo*pageSize id from 表名 order by id asc   // 即先升序排好,取出包含那页的所有数据,
  ) 
  order by id desc  //然后再倒序排好,再取前面几条记录即可
  
  总的来说:即先升序排好,取出包含那页的所有数据,然后再倒序排好,再取前面几条记录即可(做到取到了想要的那一页)
页: [1]
查看完整版本: sql server分页的一种写法