在分頁中,我們需要設置幾個分頁所需要的變量
pageSize //每頁的記錄數
pageNow //當前所在頁
Sql server2000的分頁:
建表的SQL語句:
–創建學生表
create table student(
sid int primary key, –編號
sname varchar(20) not null, –姓名
sage int not null –年齡
)
問題:按sid由小到大排序,找出第3條到第8條記錄。
方案一:
–根據sid排序,取出前兩條記錄的sid
select top 2 sid from student order by sid
–根據sid排序除掉前兩條記錄後的前面6條記錄(也就是選出第3條到第8條記錄)
select top 6 * from student where sid not in (select top 2 sid from student order by sid) order by sid;
分頁:
select top pageSize * from student where sid not in (select top pageSize*(pageNow-1) sid from student order by sid) order by sid;
方案二:
—-根據sid排序,取出前兩條記錄的sid
select top 2 sid from student order by sid
–在前兩條記錄的基礎上求得最大的sid
select isnull(max(sid),0) from (select top 2 sid from student order by sid
–獲得第3條到第8條記錄
select top 6 * from student where sid>(select isnull(max(sid),0) from (select top 2 sid from student order by sid) A) order by sid
分頁:
select top pageSize * from student where sid>(select isnull(max(sid),0) from (select top pageSize*(pageNow-1) sid from student order by sid) A) order by sid
MySQL的分頁:
建表的SQL語句:
–創建學生表
create table student(
sid int primary key, –編號
sname varchar(20) not null, –姓名
sage int not null –年齡
)
問題:按sid由小到大排序,找出第3條到第8條記錄。
方案:
select * from student order by sid limit 2,3
注意:limit後面的兩個數分別表示從哪條記錄算起,查找幾條記錄,MySQL中記錄是從第0條開始算起
分頁:
Select * from student order by sid limit pageSize*(pageNow-1),pageSize
Oracle的分頁:
創建SQL語句:
create table student(
sid number primary key,
sname varchar2(20) not null,
sage number not null
)
問題:按sid由小到大排序,找出第3條到第8條記錄。
方案:
–按sid由小到大排序
select * from student order by sid
–在排好序的表中,選出前8條記錄
select t.,rownum rn from(select from student order by sid) t where rownum<=8
–然後再在上面的基礎上選出第3條到第8條記錄
select * from (select t.,rownum rn from(select from student order by sid) t where rownum<=8) where rn>=3
分頁:
select * from (select t.,rownum rn from(select from users order by id) t where rownum<=pageSize*pageNow) where rn>=(pageSize*(pageNow-1)+1);