分頁查詢數據的兩種寫法


                                          分頁查詢數據的兩種寫法

      首先說明一下,這篇文章呢,只適合一些初學者看一下.大神神馬的可以跳過了.

      那先說一個第一個分頁詢數據的思路,就是把我們不要看的查詢出來,比如我們要看第五頁的內容,我們就先查詢出前四頁的內容,然后把不要看的前四頁干掉(not in)一下,然后再在這個基礎上top一下,比如每頁是10條數據的話,那么你在這個基礎上top 10查一下就是第五頁的數據且會顯示10條.此種查詢代碼如下:

1 select 
2    top 5
3    *
4    from Customers
5    where CustomerID not in
6    (
7     select top((2-1)*5)CustomerID from Customers order by CustomerID asc
8    )
9    order by CustomerID asc
第一種查詢的方法

     第二個分頁查詢的方法就是就是用到row_number()函數,此函數是在sql 2005在添加的函數,以前是沒有的.此函數就是根據已存在的列建立新的一列,此新的一列是數字,從1開始.還有就是用到over()子句,其可應用於排名開窗函數和聚合開窗函數.表示根據什么來分.我們這個用到這兩個,然后找出頁數與當前頁顯示條數之間的關系,between and 一下也就可以了.因為row_number()函數已經為我們建立了新的從一開始的數字列了,而over()則告訴我們是根據什么來分的了.那么此種查詢代碼如下:

1 select 
2     *
3     from
4 (select
5   ROW_NUMBER() over(order by customerId asc)as Rn,
6   *
7   from Customers
8 ) as Tbl where Tbl.Rn between(2-1)*5+1 and 2*5 
用row_number()分布的方法

    


免責聲明!

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



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