随笔-19  评论-128  文章-1  trackbacks-0

在数据库层使用SQL分页可以很大程度增加平台系统程序运行速度与效率。本人只是初入手半数据库半程序的开发,所以对数据库研究不深。于是要收集下列代码以作参考,同时也Post出来可以让需要的人参考一下,高手就请见笑了。说转载说不上,说原创也... 国庆期间在家家里的机子跑DB比较困难,做不了过多测试。不过语句或函数方面本人都仔细看过抄回来的SQL的网页里示例,感觉基本上大同小异,如果有错误查下做相应的修改或百度Google一下应该没什么大问题,也请多多包涵。当然,有机会就会对下列SQL做测试,然后会进行修正。至于每个数据库分页在这就不进行深究,只是列出个可用的方法。

##########
# MySQL#
##########

select * from tlk_buginfo limit startPos, pageSize

startPos: 定义当前页起始位置(不包括startPos)
pageSize: 每页显示数据的条数

##########
# MSSQL#(2005的row_number,暂无2000)
##########

1、
--返回第20-40行数据
select top 20 * from (select row_number() over (order by EmployeeID) as RowNumber, * from HumanResources.Employee) TableNickname where RowNumber>=20

2、
--返回第20-40行数据
select * from (select row_number() over (order by EmployeeID) as RowNumber, * from HumanResources.Employee) TableNickname where RowNumber between 20 and 40

3、
--返回第20-40行数据
with OrderedResults as
(select *, ROW_NUMBER() OVER (order by EmployeeID) as RowNumber FROM HumanResources.Employee)
select * from OrderedResults where RowNumber between 20 and 40

##########
# Oracle#
##########

①采用rownum关键字(三层嵌套)
--返回第5-15行数据
select * from (select row_.*, rownum num from (select * from tlk_buginfo) row_ where rownum<=15) where num>=5

②采用row_number解析函数进行分页(效率更高)
--返回第5-15行数据
select tab.* from (select t.*, row_number() over (order by lastmodified) as num from tlk_buginfo t) tab where num between 5 and 15

##########
# DB2#
##########

select * from (select *, rownumber() over(order by 排序字段 asc ) as rowid  from 表名 )as a where a.rowid >= startPage AND a.rowid <endPage

##########
# Hsqldb#
##########

select LIMIT 0 10 表名


收集资料:(allen)
posted on 2010-10-10 21:32 obpm 阅读(376) 评论(1)  编辑  收藏 所属分类: 数据库

评论:
# re: 数据库SQL分页收集[未登录] 2010-10-17 20:46 | NIcholas
总结得不错  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: