程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 解析數據庫分頁的兩種方法對比(row_number()over()和top的對比)

解析數據庫分頁的兩種方法對比(row_number()over()和top的對比)

編輯:MySQL綜合教程

今天,老師帶偶們復習了一下數據庫中的分頁,總體來說,今天感覺還不錯,因為以前學的還沒忘。好了,進入正題,
首先,說說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

恩 就這樣 這是我的理解 希望能給看得人帶來幫助吧~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved