分頁查詢數據的兩種寫法
首先說明一下,這篇文章呢,只適合一些初學者看一下.大神神馬的可以跳過了.
那先說一個第一個分頁查詢數據的思路,就是把我們不要看的查詢出來,比如我們要看第五頁的內容,我們就先查詢出前四頁的內容,然后把不要看的前四頁干掉(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
