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

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

編輯:MySQL綜合教程

解析數據庫分頁的兩種辦法比較(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

恩 就如許 這是我的懂得 願望能給看得人帶來贊助吧~
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved