SQL兩種簡單分頁查詢方式,sql分頁查詢方式

來源:互聯網
上載者:User

SQL兩種簡單分頁查詢方式,sql分頁查詢方式


          

        以前我們或許都用過了linq的skip and take方式進行分頁查詢,但是很少自己寫sql的分頁查詢,因為大多數時候,我們都是在調用別人的方法。


             最近看到一個文檔,感覺方法裡面實現的分頁查詢進入資料庫調用的時候,實際最底層調用的還是SQL的分頁查詢,例如,我們用linq寫個分頁查詢,轉成sql運算式後發現:


     

          



             實際調用的時候,才發現SQL底層是這樣進行分頁的。


       

                   下面,本文主要是介紹兩種SQL的分頁查詢。



  一,TOP方式 


----第一種分頁查詢方式:TOP方式  declare @page int=3  --當前頁面  declare @nums int=5  --每頁5條  select top (@nums)       [Ar_id]      ,[Ar_Title] from [ta_Article]   where [Ar_id] not in (select  top ((@nums)*(@page-1)) [Ar_id] from [ta_Article] order by [Ar_id])   order by [Ar_id] 

      

         top是選擇前多少行,在利用top分頁的時候,比如我們要取第3頁,每頁5條資料,這時候,我們可以先去掉前2頁的資料,然後用top選擇剩下資料的前5條。




二,ROW_NUMBER()方式


  這種方式是從SQL SERVER 2008才開始支援的,是不是感覺挺高仿Oracle的~


 

--第二種分頁查詢方式:ROW_NUMBER()方式declare @pageNum int=3  --當前頁面declare @EachNums int=5  --每頁5條select * from(  select [Ar_id]      ,[Ar_Title],ROW_NUMBER() over(order by [Ar_id],[Ar_Title]) as 行號  from [ta_Article]) as t       where t.行號 between (((@EachNums)*(@pageNum-1))+1) and (@pageNum)*(@EachNums)


 使用Row_Number主要是根據行號進行分頁,最後一個between 判斷行號。




      小結:

              SQL分頁方式有很多種,在選擇如何分頁的時候,要考慮使用者比較常用的是前面的頁還是後面的頁,如果是比較靠前的頁,top方式還是不錯的。如果是靠後的,可以選擇rownumber;另外,有時候還是要綜合考慮。綜合考慮的時候,rownumber方式是比較常見的,也是效率比較好的。



       


 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.