SQL Server 2012 實現分頁新語法


最近一直在看SQL Server的書,不過看的都是基礎的查詢流,查詢在工作中用到的最多,所以能正確地查詢出想要的數據也是很重要的嘛。

在書上看到在SQL Server 2012新增了一種實現分頁的查詢方法,感覺比原來的方便一點,因此記錄一下,如能幫助到大家,也是非常開心的~

 

以前分頁的時候,我基本都是用ROW_NUMBER()函數,和在WHERE語句中用BETWEEN AND 來實現的;每次都得寫子查詢,感覺挺麻煩的,例:

SELECT *
FROM (
    SELECT 
        ID,
        ROW_NUMBER() OVER(ORDER BY [Datetime] DESC) AS num
    FROM dbo.tblUser
) AS t
WHERE t.num BETWEEN 11 AND 20

 

在SQL Server 2012中就不需要寫子查詢啦,直接在ORDER BY語句中就可以實現分頁啦!例:

SELECT
    ID,
    ROW_NUMBER() OVER(ORDER BY [Datetime] DESC) AS num
FROM dbo.tblUser
ORDER BY num
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY

  需注意的是:該語法是在ORDER BY 子句中引入了兩個新的參數 OFFSET 和  FETCH,因此它們必須在order by語句只有使用,且必須結合使用才能使分頁正常運作。

  OFFSET指定在返回查詢結果之前要跳過的行數,FETCH指定OFFSET之后返回的行數。


免責聲明!

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



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