三大主流数据库sql server、mysql、oracle的分页操作

来源:互联网 发布:纳什均衡和福利最优化 编辑:程序博客网 时间:2024/05/01 08:25

在分页中,我们需要设置几个分页所需要的变量
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);

1 0
原创粉丝点击