网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Windows XP下安装SQL2000企业版 .
.使用Rose2003进行数据库建模并导.
.深入讲解数据挖掘中的“数据归约.
.当您安装SQL Server 2005或94810.
.讲解SQL Server安装sp4补丁报错的.
.解决SQL Server 2000 JDBC 驱动程.
.SQL Server全文检索简介.
.把SQL结果中几行值串起来的sum_s.
.如何导出sql2005的数据库才能够导.
.sql server日期时间函数.
.解决SQL Server 2000在安装过程中.
.正确配置和使用SQL mail.
.Microsoft SQL Server数据备份处.
.实例讲解SQL Server中非常有用EX.
.用一个实例讲解数据增量抽取的模.
.SQL Server 2008升级顾问.
.在SQL Server 2005中实现表的行列.
.个人经验总结:SQL Server数据库.
.SQL Server 2005下的分页SQL.
.MS SQL数据库备份和恢复存储过程.

SQL server 2005的简单分页程序

发表日期:2006-7-12


SQL2005增加了不少新特性,其中NTILE和ROW_NUMER使得我们不再为SQL如何灵活方便的分页伤脑筋了(不必再羡慕Oracle等数据库了)。
  下面就是一个很简单的分页查询语句: DECLARE @rows_per_page AS INTEGER
DECLARE @current_page AS INTEGER
DECLARE @total_pages AS INTEGER

-- 设置每页的行数
SET @rows_per_page = 20
-- 设置要显示的页号(从1开始)
SET @current_page = 2
-- 计算总页数
SELECT @total_pages = COUNT(*) / @rows_per_page
FROM testtable;

-- 列出指定页的内容
WITH t AS
(
  SELECT NTILE(@total_pages) OVER(ORDER BY id) AS page_number, *
  FROM testtable
)
SELECT * from t
WHERE page_number = @current_page   程序简单到可以不用说明的程度。
  我们可以利用上述简单的语句,变化排序条件和查询表,就可以做出一个很通用的分页查询的存储过程或查询语句了。

  同样的,使用ROW_NUMBER也可以做到分页查询: DECLARE @rows_per_page AS INTEGER
DECLARE @current_page AS INTEGER
DECLARE @start_row_num AS INTEGER

-- 设置每页的行数
SET @rows_per_page = 20
-- 设置要显示的页号(从1开始)
SET @current_page = 2
-- 设置开始行号
SET @start_row_num = (@current_page - 1) * @rows_per_page

WITH t AS
(
  SELECT ROW_NUMBER() OVER(ORDER BY id) AS row_number, *
  FROM testtable
)
SELECT * from t
WHERE row_number BETWEEN @start_row_num AND @start_row_num + @rows_per_page  似乎更简单的样子。

  至于哪种效率更高,这需要大家实际测试了。

http://ly4cn.cnblogs.com/archive/2006/07/11/447905.html

上一篇:SQL Server 数据库连接字符串的声明 人气:13634
下一篇:解决sqlserver2005中文版与vs2005的WebApplicationProject的冲突问题 人气:7697
浏览全部SQL server 2005的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐