sql server實現Mysql中的limit分頁功能


沒有使用ORM框架前,一直使用原生sql分頁,突然想起來,便隨手一記吧。。

 

首先,在mysql 中有一種常見的分頁方式

  • LIMIT總是設定為pageSize
  • OFFSET計算公式為pageSize * (pageIndex - 1)
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 0;

但是在sql server中沒有limit關鍵詞,相對應的是TOP關鍵字,所以可以使用以下方法查詢

方法一:在這里查詢的是根據userID排序的第7,8,9條

SELECT  *
FROM    dbo.t_user
WHERE   userID IN ( SELECT TOP 3
                            userID
                    FROM    t_user
                    WHERE   userID NOT IN ( SELECT TOP 6
                                                    userID
                                            FROM    t_user ) )

 

方法二:其中的PageSize(分頁的大小)和PageIndex(分頁索引,初始假設為1)均為變量

SELECT  *
FROM    ( SELECT TOP PageSize 
                    *
          FROM      ( SELECT TOP [PageIndex*PageSize]
                                *
                      FROM      dbo.t_user
                      ORDER BY  id ASC
                    ) AS b
          ORDER BY  id DESC
        ) AS c
ORDER BY id ASC;

方法三:其中的PageSize(分頁的大小)和PageIndex(分頁索引,初始假設為1)均為變量

SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY userID ASC ) AS rownumber ,
                    *
          FROM      dbo.t_user
          WHERE     1 = 1
        ) AS t
WHERE   t.rownumber > (PageSize *(PageIndex-1))
        AND t.rownumber <= (PageSize *PageIndex)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM