資料庫分頁實現
SQL分頁速度要快些,頂一個~
⑵ SQL資料庫分頁原理
要想分頁,首先得做好准備工作。你要先聲明每頁顯示多少條數據,還得獲取當前選擇的是多少頁的頁碼。有了這兩個分頁就好辦了。
sql如下:select top 10 from tableName
where (id not in(select top 20 from tableName order by Id desc)) order by Id desc
每頁顯示的數量:自己定義。
總頁數:數據總條數/每頁顯示的條數
當前頁碼的計算方法:(頁碼-1)*每頁顯示的數量。比如我要瀏覽第3頁的數據,3從客戶端傳送過來後,在後台對頁碼進行處理:(3-1)*每頁顯示的數量(假如是10).算出來後的結果就是20.你在把20以參數注入的方式動態添加到上面那個20那裡就ok了。
sql中的10表示你每頁顯示的數據,這里跟10,就代表每頁顯示10條。(你可以定義一個常量作為每頁顯示的條數)
where中的20表示不包括前面的20條數據,也就是查詢出從第21條到30之間的數據。
不知道我這樣說你是否理解,其實只要理解了sql語句,分頁就很好做了。
⑶ 用SQL語句怎麼實現資料庫分頁
CREATE
PROC
sp_PageView
@tbname
sysname,
--要分頁顯示的表名
@FieldKey
nvarchar(1000),
--用於定位記錄的主鍵(惟一鍵)欄位,可以是逗號分隔的多個欄位
@PageCurrent
int=1,
--要顯示的頁碼
@PageSize
int=10,
--每頁的大小(記錄數)
@FieldShow
nvarchar(1000)='',
--以逗號分隔的要顯示的欄位列表,如果不指定,則顯示所有欄位
@FieldOrder
nvarchar(1000)='',
--以逗號分隔的排序欄位列表,可以指定在欄位後面指定DESC/ASC用於指定排序順序
@Where
nvarchar(1000)='',
--查詢條件
@PageCount
int
OUTPUT
--總頁數
AS
SET
NOCOUNT
ON
--檢查對象是否有效
IF
OBJECT_ID(@tbname)
IS
NULL
BEGIN
RAISERROR(N'對象"%s"不存在',1,16,@tbname)
RETURN
END
IF
OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTable')=0
AND
OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsView')=0
AND
OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTableFunction')=0
BEGIN
RAISERROR(N'"%s"不是表、視圖或者表值函數',1,16,@tbname)
RETURN
END
--分頁欄位檢查
IF
ISNULL(@FieldKey,N'')=''
BEGIN
RAISERROR(N'分頁處理需要主鍵(或者惟一鍵)',1,16)
RETURN
END
--其他參數檢查及規范
IF
ISNULL(@PageCurrent,0)<1
SET
@PageCurrent=1
IF
ISNULL(@PageSize,0)<1
SET
@PageSize=10
IF
ISNULL(@FieldShow,N'')=N''
SET
@FieldShow=N'*'
IF
ISNULL(@FieldOrder,N'')=N''
SET
@FieldOrder=N''
ELSE
SET
@FieldOrder=N'ORDER
BY
'+LTRIM(@FieldOrder)
IF
ISNULL(@Where,N'')=N''
SET
@Where=N''
ELSE
SET
@Where=N'WHERE
('+@Where+N')'
--如果@PageCount為NULL值,則計算總頁數(這樣設計可以只在第一次計算總頁數,以後調用時,把總頁數傳回給存儲過程,避免再次計算總頁數,對於不想計算總頁數的處理而言,可以給@PageCount賦值)
IF
@PageCount
IS
NULL
BEGIN
DECLARE
@sql
nvarchar(4000)
SET
@sql=N'SELECT
@PageCount=COUNT(*)'
+N'
FROM
'+@tbname
+N'
'+@Where
EXEC
sp_executesql
@sql,N'@PageCount
int
OUTPUT',@PageCount
OUTPUT
SET
@PageCount=(@PageCount+@PageSize-1)/@PageSize
END
--計算分頁顯示的TOPN值
DECLARE
@TopN
varchar(20),@TopN1
varchar(20)
SELECT
@TopN=@PageSize,
@TopN1=@PageCurrent*@PageSize
--第一頁直接顯示
IF
@PageCurrent=1
EXEC(N'SELECT
TOP
'+@TopN
+N'
'+@FieldShow
+N'
FROM
'+@tbname
+N'
'+@Where
+N'
'+@FieldOrder)
ELSE
BEGIN
--生成主鍵(惟一鍵)處理條件
DECLARE
@Where1
nvarchar(4000),@s
nvarchar(1000)
SELECT
@Where1=N'',@s=@FieldKey
WHILE
CHARINDEX(N',',@s)>0
SELECT
@s=STUFF(@s,1,CHARINDEX(N',',@s),N''),
@Where1=@Where1
+N'
AND
a.'+LEFT(@s,CHARINDEX(N',',@s)-1)
+N'='+LEFT(@s,CHARINDEX(N',',@s)-1)
SELECT
@Where1=STUFF(@Where1+N'
AND
a.'+@s+N'='+@s,1,5,N''),
@TopN=@TopN1-@PageSize
--執行查詢
EXEC(N'SET
ROWCOUNT
'+@TopN1
+N'
SELECT
'+@FieldKey
+N'
INTO
#
FROM
'+@tbname
+N'
'+@Where
+N'
'+@FieldOrder
+N'
SET
ROWCOUNT
'+@TopN
+N'
DELETE
FROM
#'
+N'
SELECT
'+@FieldShow
+N'
FROM
'+@tbname
+N'
a
WHERE
EXISTS(SELECT
*
FROM
#
WHERE
'+@Where1
+N')
'+@FieldOrder)
END
⑷ Mysql 資料庫怎麼實現分頁,要說的通俗一點兒
一個不帶limit 一個帶limit。以php+mysql為例首先,連接資料庫,寫一條sql語句把你要查詢的信息總量查找出來sql = select count(*) from tb,$all_page ;設定每頁顯示條數, $display 。然後,當前頁為$page ;在寫一句sql = select * from tb limit $dispaly*($page - 1),$display;最後,在頁面顯示分頁信息把當前頁傳回給分頁處理頁,一定要把相關的條件一起傳回去,get 方式傳值,否則查詢條件改變查詢信息就不正確。 網上有好多封裝好的分頁類。我也有一個很好用的分頁類,如果請我吃肉就發給你一份哈。。\(^o^)/~ 追問: 這個$all_page用在哪兒,怎麼將當前頁傳回給分頁處理頁。顯示的時候那些「首頁」「上一頁」「下一頁」「末頁」是鏈接嗎、鏈到什麼地方,還是別的什麼 回答: $all_page是查詢總數,總是頁數等於查詢總數除以每頁顯示的信息。$num_page = ceil($all_page/$display); 用get方式把當前頁傳給分頁處理頁,就是標簽 別的我也想不起來,讓我自己寫分頁,我只會最簡單的那種,一般我都是調用一個現成的分頁類。只需傳個參數就Ok,連樣式都不用寫的。。。
⑸ 如何實現從資料庫中取出的列表數據進行分頁
創建出你需要的屬性比如在我的項目中我需要用到的:有當前的頁碼currentPage
當前的頁顯示的數量currentCount
你從資料庫中查詢得到的所有數據總和totalCount(這個你需要在層定義方法實現並把得到的數據返回給service層)
一共需要分多少頁totalPage(這個需要你去計算通過查詢所有的數據總和/currentCount,還用到了math.ceil()方法)
最後生成setter和getter方法
⑹ 如何實現Oracle資料庫的分頁顯示
在讀取數據時傳入一個參數,所謂的分頁其實就是按某個值段讀取
比如說一頁顯示10行,那麼第二頁就是10-20行....
⑺ oracle資料庫怎麼實現分頁,且每頁三條數據
select g.* from (select a.*,rownum ct from t where rownum<=n*3) g
where g>(n-1)*3
⑻ 怎樣實現資料庫的分頁查詢
針對查詢語句做處理,同時對請求頁面地址做分析
list.aspx?pageid=5 //表示訪問第五頁
後台語言里,先對查詢條件做預處理
pagepre=pagesize*4 //pagesize 用於表示分頁大小,例如10,則前4頁共有40條記錄
查詢語句
sqlcmd="select top "+pagesize+" from tabelname where id not in (select top "+pagepre+" from tablename order by id desc)"
操作原理為將當前頁前顯示的所有記錄從數據查詢結果中排除,也就是not in 後面的部分,然後從剩餘的結果沖,讀取pagesize大小的記錄值。篩選條件、排序條件放在子查詢中
⑼ 結合MySQL資料庫,如何實現分頁功能
第一步:我們可以利用$_GET方法獲取某一個參數的值,在用戶點擊上一頁、下一頁、首頁或者末頁時獲取不同的動態參數。第二步:根據MySQL的limit關鍵字,對動態參數進行SQL語句拼接。將定義每頁顯示的數據條數,在limit第一個參數的位置中,根據地址欄參數的動態變化從而實現指定從第幾條數據開始顯示數據。你可以跟著傳智播客老師教給我的步驟試一下,這是我在學習PHP的時候學到的,現在我都工作了,工資12K。