zoukankan      html  css  js  c++  java
  • sql 两种分页offset和row_number简单分析

    新建临时表字段id,向临时表里插入1,2,3,4,5,6

    if object_id('tempdb..#test') is not null drop table #test 
    create table #test(id int)
    insert into #test(id)values(1),(2),(3),(4),(5),(6)
    
    declare @page int---当前页面
    declare @rows int---页面大小
    set @page=2
    set @rows=3


    ---------当前页面为2,页面大小为3---则结果得到id(4,5,6)--------

    (1)offset方法是Sql Server 2012才有的函数

    使用offset startPage rows fetch next pageSize rows only 方式---起始页面:startPage=(@page-1)*@rows,页面大小:pageSize=@rows

    select t10.id from #test t10
    order by t10.id--需要一个排序,否则分不了页
    offset (@page-1)*@rows rows fetch next @rows rows only---offset的当前页面是从零开始

    (2)使用row_number()函数得出新排序lineid,在用between 条件筛选页面

    起始页面startPage=(@page-1)*@rows+1;结束页面endPage=@rows+(@page-1)*@rows+1;页面大小:pageSize=@rows

    select top (@rows) t11.lineid,t11.id from (select cast(ROW_NUMBER() over (order by id asc) as int) lineid,id from #test) t11
    where t11.lineid between (@page-1)*@rows+1 and @rows+(@page-1)*@rows+1
    order by t11.lineid

    结果如下:

  • 相关阅读:
    hdu 2647 Reward
    hdu 2094 产生冠军
    hdu 3342 Legal or Not
    hdu 1285 确定比赛名次
    hdu 3006 The Number of set
    hdu 1429 胜利大逃亡(续)
    UVA 146 ID Codes
    UVA 131 The Psychic Poker Player
    洛谷 P2491消防 解题报告
    洛谷 P2587 [ZJOI2008]泡泡堂 解题报告
  • 原文地址:https://www.cnblogs.com/panter/p/6612601.html
Copyright © 2011-2022 走看看