解析數據庫分頁的兩種辦法比較(row_number()over()和top的比較)。本站提示廣大學習愛好者:(解析數據庫分頁的兩種辦法比較(row_number()over()和top的比較))文章只能為提供參考,不一定能成為您想要的結果。以下是解析數據庫分頁的兩種辦法比較(row_number()over()和top的比較)正文
明天,先生帶偶們溫習了一下數據庫中的分頁,整體來講,明天感到還不錯,由於之前學的還沒忘。好了,進入正題,
起首,說說top的辦法
top辦法其實就是將你要查的的頁數的數據前得數據去失落 再取前幾
例:
一頁3條數據 取第一頁的數據
-- 第一頁
select top 3 * from T_news;
取第五頁的數據
--第五頁
select top 3 * from T_News where id not in (select top (3*4) id from T_News) --症結就在於not in上 靠他往來來往失落前幾頁的數據
假如想要本身設定每頁幾條數據和看第幾頁的話也行 就多加個存儲進程
create proc usp_fenye @geshu int,@yeshu int
as
begin
select top (@geshu) * from T_News where id not in (select top (@geshu*(@yeshu-1)) id from T_News)
end
然後,我們再說說ROW_NUMBER()over()的辦法
這個其實就是又給數據表加了一個列在用來肯定數據是第幾條
例:
一頁3條數據 取第一頁的數據
select * from (select *,ROW_NUMBER()over(order by id asc) as number from T_News ) as tb1
where number between 1 and 3;
第五頁的數據
select * from (select *,ROW_NUMBER()over(order by id asc) as number from T_News ) as tb1
where number between 3*4+1 and 3*5;
本身設定每頁幾條數據和看第幾頁
create proc usp_fenye @geshu int,@yeshu int
as
begin
select * from (select *,ROW_NUMBER()over(order by id asc) as number from T_News ) as tb1
where number between @geshu*(@yeshu-1)+1 and @geshu*@yeshu;
end
恩 就如許 這是我的懂得 願望能給看得人帶來贊助吧~