数据库分页查询
1. sql Server 分页 查询语句
四种方式实现SQLServer 分页查询
SQLServer 的数据分页:
假设现在有这样的一张表:
CREATE TABLE test
(
id int primary key not null identity,
names varchar(20)
)
然后向里面插入大约1000条数据,进行分页测试
假设页数是10,现在要拿出第5页的内容,查询语句如下:
--10代表分页的大小
select top 10 *
from test
where id not in
(
--40是这么计算出来的:10*(5-1)
select top 40 id from test order by id
)
order by id
原理:需要拿出数据库的第5页,就是40-50条记录。首先拿出数据库中的前40条记录的id值,然后再拿出剩余部分的前10条元素
第二种方法:
还是以上面的结果为例,采用另外的一种方法
--数据的意思和上面提及的一样
select top 10 *
from test
where id >
(
select isnull(max(id),0)
from
(
select top 40 id from test order by id
) A
)
order by id
原理:先查询前40条记录,然后获得其最id值,如果id值为null的,那么就返回0
然后查询id值大于前40条记录的最大id值的记录。
这个查询有一个条件,就是id必须是int类型的。
第三种方法:
select top 10 *
from
(
select row_number() over(order by id) as rownumber,* from test
) A
where rownumber > 40
原理:先把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录
这种方法和oracle中的一种分页方式类似,不过只支持2005版本以上的
第四种:
存储过程查询
创建存储过程
alter procere pageDemo
@pageSize int,
@page int
AS
declare @temp int
set @temp=@pageSize*(@page - 1)
begin
select top (select @pageSize) * from test where id not in (select top (select @temp) id from test) order by id
end
执行存储过程
exec 10,5
2. Access数据库分页查询,效率sql语句
in的效率太低,不能利用索引,建议使用:
select top 每页数量 * from 表 where id >(select top 1 max(id) from (select top (页数-1)*每页数量 from 表 order by id,name)) 或
select top 每页数量 * from 表 where id <(此处根据顺序和逆序)
3. oracle数据库分页查询,
ROWNUM是伪列,只能<=,不能>=
所以需要给ROWNUM起个别名,变成逻辑列后来比较
select *
from (select rownum as num,a.* from (select * from test order by 1 asc) a) t
where t.num>=20
and t.num<=40;
你写的可以修改为:
select *
from (select ROWNUM as num,A.* from (select * from test) A where rownum <= 40)
where num >= 20;
4. 数据库 分页是什么意思
数据库分页也是在数据库里写查询语句,不同的是查询的都是指定条数到指定条数的数据,不是一次性把数据全查出来。
5. 数据库表里如果数据行数很多,做分页查询,SQL如何书写
mysql用limit start,rows
sqlite 用 limit rows offset start
其他的也差不多 比较恶心的就是oracle和sqlserver 要嵌套查询
6. 数据库SQL查询分页问题
with pagnation as
(
select pk_psn,psnname,age row_number() over(order by age) as rowNum
from 表名
)
select top 10 * from pagnation where rowNum>10*(page-1) --表示10你每页显示条数,page你的页数
你可以参考一下
http://hi..com/haifeng_4216/blog/item/515711f933c3cd50242df228.html
http://hi..com/haifeng_4216/blog/item/e0a6512577d24d6e35a80f2e.html
7. MySql中查询语句实现分页功能
pageNow代表当前页面,第一页。
8. 怎样实现数据库的分页查询
针对查询语句做处理,同时对请求页面地址做分析
list.aspx?pageid=5 //表示访问第五页
后台语言里,先对查询条件做预处理
pagepre=pagesize*4 //pagesize 用于表示分页大小,例如10,则前4页共有40条记录
查询语句
sqlcmd="select top "+pagesize+" from tabelname where id not in (select top "+pagepre+" from tablename order by id desc)"
操作原理为将当前页前显示的所有记录从数据查询结果中排除,也就是not in 后面的部分,然后从剩余的结果冲,读取pagesize大小的记录值。筛选条件、排序条件放在子查询中
9. 如何用sql语句 实现分页查询
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
10. sql 分页查询 数据库高手请进
请楼主在前台语言中实现。