2008年11月22日星期六

用于SQL Server和Access的分页语句

我们在开发过程中经常要用到分页显示数据的需求,实现分页的方法有多种,下面说明使用SQL语句进行分页的方法。

使用SQL语句分页的原理就是首先要知道每页要显示多少行数据,我们把这个值存在一个变量pageSize中,然后就是要确定要显示的是第几页,我们把这个值存在一个变量pageCount中。于是显示第pageCount页数据的SQL语句就是从排除了前(pageCount-1)*pageSize行的剩下的行中取前pageSize行。

相应的语句如下:

select top pageSize * from 表名
where 主键列名 not in
(select top (pageCount-1)*pageSize 主键列名 from 表名 order by 主键列名)
order by 主键列名



注意其中变量pageSize和pageCount的运用是用来阐明原理的,应该在应用程序中或存储过程中进行计算后生成相应的SQL语句,对数据库来说,top后面期望跟随一个常量值。

这样只要知道每页显示多少行数据和要显示第几页,就可以从数据库中取出相应的数据显示了。程序中其它语句与显示所有数据时相同。
因为当top关键字后面跟随0时,在Access中会报语法错误,所以当您使用Access数据库时,应该在程序进行判断,当pageCount为1即第一页时,使用下面的语句,第2页以后使用上面的语句:



select top pageSize * from 表名
order by 主键列名

没有评论: