沐枫小筑
script c c++ c++/cli c#
.net windows ria game and so ...
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 56 文章- 1 评论- 404
SQL2005的简单分页程序
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
似乎更简单的样子。
至于哪种效率更高,这需要大家实际测试了。
posted @ 2006-07-11 12:08
沐枫
阅读(2149)
评论(4)
编辑
收藏
网摘
所属分类:
Other#
发表评论
回复
引用
查看
#1楼
2006-07-11 12:48 |
U2U
用SetRow岂不是更妙,效率超级高
回复
引用
查看
#2楼
[
楼主
]2006-07-11 12:57 |
沐枫
没查到set row,是否是set rowcount?
回复
引用
查看
#3楼
2007-10-08 16:17 |
ez.zhao
U2U 的 意思应该是rowset,使用游标和行集处理~~~个人感觉这个不是2005所提倡的,还是用内置的分组ROW_NUMBER() 或者NTILE()更好点!
回复
引用
#4楼
2008-04-09 15:23 |
houwangjing [未注册用户]
第一个方法中用的NTILE,得到的结果有点问题!不知道怎么回事!!
刷新评论列表
切换模板
发表评论
姓名
[登录]
[注册]
主页
Email
(仅博主可见)
验证码
*
看不清,换一张
内容(请不要发表任何与政治相关的内容)
今天你闪了吗?
《C# 3.0设计模式》65折特惠
Remember Me?
登录
使用高级评论
新用户注册
返回页首
[使用Ctrl+Enter键可以直接提交]
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
.NET频道
知识库
找找看
Google站内搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
相关链接:
最新IT新闻:
Google App Engine宕机6小时——云的安全在哪里?
微软新推社交网站Windows Live Planet
火狐3.5版被指推出太匆忙:存在50多个漏洞
Google对手机搜索进行优化升级
风声又起 Windows 7 RTM版7月13日完成
公告
沐枫小筑 主力博客
沐枫小筑 C++博客
与我联系
发短消息
搜索
留言簿
给我留言
查看留言
我参与的团队
福州.NET俱乐部(0/0)
我的标签
DynamicControl(8)
ASP.NET(1)
C#(1)
ASP.NET 3.5 SP1(1)
随笔分类
(55)
.NET(13)
(rss)
C++(21)
(rss)
Flex(3)
(rss)
Other#(5)
(rss)
Tip#(7)
(rss)
乱弹(6)
(rss)
随笔档案
(54)
2009年1月 (1)
2008年8月 (2)
2008年4月 (1)
2007年12月 (1)
2007年11月 (1)
2007年10月 (2)
2007年9月 (4)
2007年8月 (2)
2007年7月 (1)
2007年5月 (2)
2006年9月 (3)
2006年8月 (5)
2006年7月 (1)
2006年6月 (6)
2006年5月 (1)
2006年4月 (3)
2006年3月 (4)
2006年1月 (1)
2005年12月 (1)
2005年11月 (7)
2005年9月 (5)
收藏夹
(32)
.NET(32)
(rss)
推荐链接
c++
Dflying Chen
(rss)
Dreamer's Blog
(rss)
Macromedia 技术
沐枫小筑
中国地方游戏网
我的Blog
C++ 沐枫小筑
(rss)
沐枫@blogchina.com
(rss)
沐枫@blogcn.com
(rss)
沐枫@csdn.net
(rss)
沐枫@teeta.com
(rss)
积分与排名
积分 - 194181
排名 - 243
最新评论
1. re: 您也使用托管C++吗?
不是为什么维护以前的C++代码,而是C#有些实现不了的功能用C++写,但C#又想实现,却来个变态的互操作 (ZKO)
2. re: C++指针探讨 (四) 函数对象
思路很清晰,例子很明了。不错!不错! (帘卷西风1985)
3. re: X-GL 超越Vista的界面效果
推荐一个不错的编程资料下载的地址
以下的链接中有海量的资料供有需要的朋友下载,希望能对你有帮助。
(yashaov)
4. re: DynamicControl/DynamicField 例外的解决
推荐一个不错的编程资料下载的地址
以下的链接中有海量的资料供有需要的朋友下载,希望能对你有帮助。
(yashaov)
5. re: .net winform 的 OnKeyDown 与 方向键
推荐一个不错的编程资料下载的地址
以下的链接中有海量的资料供有需要的朋友下载,希望能对你有帮助。
(yashaov)
阅读排行榜
1. Lua脚本语法说明(修订)(18059)
2. C++ 程序文档生成器介绍(doxygen)(15882)
3. C++指针探讨 (三) 成员函数指针 (10376)
4. C++指针探讨 (二) 函数指针(9956)
5. C++指针探讨 (一)数据指针(9332)
6. 如何使用.NET配置文件(一)(7856)
7. 您也使用托管C++吗?(7065)
8. 介绍LuaPlus: 好用的Lua For C++扩展(修订)(6807)
9. int 与 byte[] 的相互转换(5869)
10. Flex与.NET WebService(5846)