>  기사  >  데이터 베이스  >  sqlserver的3种分页方式

sqlserver的3种分页方式

WBOY
WBOY원래의
2016-06-07 16:17:571136검색

sqlserver的3种分页方式,如下: 01 ---sqlServer 2005 分页语句集合 02 ----缺点: 03 -- top:必须用户编写复杂sql,不支持复合主键 04 -- max:必须用户编写复杂sql,不支持非唯一列排序 05 --row:不支持sqlserver2000 06 -------------------------------- 07

   sqlserver的3种分页方式,如下:

  01 ---sqlServer 2005 分页语句集合

  02 ----缺点:

  03 -- top:必须用户编写复杂sql,不支持复合主键

  04 -- max:必须用户编写复杂sql,不支持非唯一列排序

  05 --row:不支持sqlserver2000

  06 --------------------------------

  07 select TOP @pagesize id,email,qq,wechart,phone,phone1 FROM contact

  08 where id not in

  09 (SELECT TOP (@pagesize*(currentpage-1)) id from contact ORDER BY id ASC )

  10 ORDER BY id ASC

  11

  12

  13 -- 效率最低下的分页语句(只需要知道页数和每页的显示数目即可)

  14 select * from AISINO_BD_TelephoneRecord order by ID asc;

  15 select top 5 ID ,companyID,projectID from dbo.AISINO_BD_TelephoneRecord

  16 where ID not in(

  17 select top (5*(2-1)) ID from AISINO_BD_TelephoneRecord order by ID asc

  18 ) order by ID asc

  19

  20

  21 ----------------------

  第二种方法,,只需要知道页数和每页的显示数目即可-------------------------------

  22

  23 select top 5 * from AISINO_BD_TelephoneRecord

  24 where ID>(

  25 select max(ID)

  26 from (select top (5*(2-1)) ID from AISINO_BD_TelephoneRecord order by ID asc)tt

  27 )

  28 order by ID asc

  29

  30

  31 ------------------

  -第三种方法---只需要知道页数和每页的显示数目即可----------------------------------

  32

  33

  34 select *

  35 from (select top (5*(1-1)+5) row_number()over(order by Id asc)__rn__, * from AISINO_BD_TelephoneRecord)t

  36 where __rn__>5*(1-1)

  在oracle 中的分页:

  oracle 自带了rownum ,直接使用rownum 进行分页:

  1

  select *

  2

  from (select a.*, rownum nm

  3

  from (select * from aos_rms_user) a

  4

  where rownum

  5

  where nm >= 5*(1-1)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.