access數據庫分頁方法介紹

access數據庫分頁方法介紹

由于數據庫記錄比較多,所以需要對查詢結果進行分頁顯示。下面是access數據庫的兩種分頁方法。

(學習視頻分享:編程入門

一、Access查詢結果分頁方法一

1、方法

設每頁記錄數為CntPerPage,要獲得第Page頁的查詢結果,用以下sql語句。

SELECT?*?FROM?( SELECT?TOP?CntPerPage?*?FROM( SELECT?TOP?Page*CntPerPage?*?FROM?TableName?WHERE?Query_Conditionm?ORDER?BY?OrderField )?ORDER?BY?OrderField?DESC )?ORDER?BY?OrderField

其中TableName為表名,Query_Condition為查詢條件,OrderField為用來排序的字段名

2、原理

嵌套使用三步查詢:
第一步查詢:將當前頁及之前所有頁的記錄查詢出來,并按排序字段降序排列

SELECT?TOP?Page*CntPerPage?*?FROM?TableName?WHERE?Query_Conditionm?ORDER?BY?OrderField

第二步查詢:將剛才查詢出來的記錄(已降序排列)的前CntPerPage個記錄查詢出來(保持降序排列),這些就是第Page頁的所有記錄

SELECT?TOP?CntPerPage?*?FROM(?第一步查詢結果?)?ORDER?BY?OrderField?DESC

第三步查詢:上一步查詢實際已經把第Page頁的記錄全部查詢出來了,只不過是降序排列的,這第三步只是把剛獲得的這些數據變成正序排列。如果對順序不要求,或者程序中有其它的數據排序處理,那么這一步就可以省略了。

SELECT?*?FROM?(?第二步查詢結果?)?ORDER?BY?OrderField

3、舉例

一個Student表,要查詢年齡age小于20歲的所有記錄,按姓名name排序,每頁記錄數為100,要獲得第5頁的查詢結果,則用以下SQL語句。

SELECT?*?FROM?(SELECT?TOP?100?*?FROM(?SELECT?TOP?500?*?FROM?Student??WHERE?age<p>二、網上常用的NOT IN方法</p><p>在網上搜索分頁方法時,這是最常見到的一種方法。<br>方法:</p><pre class="brush:html;toolbar:false">SELECT?TOP?CntPerPage?*?FROM?TableName?WHERE?Query_Conditionm?AND?id?NOT?IN?( SELECT?TOP?(Page-1)*CntPerPage?id?FROM?TableName?WHERE?Query_Conditionm?ORDER?BY?id )?ORDER?BY?id

原理:
兩步查詢:
第一步:把本頁之前的所有符合條件的記錄id選擇出來

SELECT?TOP?(Page-1)*CntPerPage?id?FROM?TableName?WHERE?Query_Conditionm?ORDER?BY?id

第二步:加入查詢條件“id不在剛才選擇出來的那些id查詢結果里”,取前CntPerPage個記錄,這樣,查詢結果就恰好過濾了前Page-1頁的所有數據,之后就選擇了第Page頁的所有記錄。

SELECT?TOP?CntPerPage?*?FROM?TableName?WHERE?Query_Conditionm?AND?id?NOT?IN?(第一步查詢結果)?ORDER?BY?id

三、分頁查詢效率

實際測試兩種方法的效率差不多,但個人認為第二種方法里的NOT IN這類判斷的效率應該不會太高,所以覺得如果記錄量比較龐大時應該第一種方法更高效些。

相關推薦:編程入門

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享