分页查询SQL

不訴離傷 2012-02-12 01:46:33
如何封装一个SELECT 类型的SQL语句,可以根据pageSize,pageIndex來分頁查詢。可以通過orderBy 也可以不需要orderBy

不要拆開SQL語句,能簡單 SELECT ...... ( 原始SQL语句 ) t1 where .... 类似这样包装。oracle可以用 ROWNUM 来写,MS-SQL不知道怎么写了。
...全文
72 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
不訴離傷 2012-02-12
  • 打赏
  • 举报
回复
还是没能解决问题,ORACLE中可以很简单实现,就是一条原始SQL语句,嵌套在最内层,不需要去拼接或者拆分它的原始SELECT语句,就可以做到要返回第几条到第几条间的记录了。MS SQL真的不知道怎么实现,因为我不想业务层需要传递什么排序方式,字段,也不关心多表查询,虚拟字段等等,我只需要对一个SQL语句查询出来的结果集进行分页,怎么MS SQL就这么难。[Quote=引用 3 楼 maco_wang 的回复:]

SQL SERVER 2005及其以上版本可以用row_number()
[/Quote]
不訴離傷 2012-02-12
  • 打赏
  • 举报
回复
这样还是很难封装吧,我需要的是随便一句select语法,可能有非常多的join,union等很复杂的查询语句,这样怎么包装,而且我原始语句里可能不需要排序。就是不一定要order by 哪个字段。[Quote=引用 2 楼 travylee 的回复:]

引用 1 楼 qianjin036a 的回复:

MSSQL 也可以用 row_number 函数,类似于:
select top pagesize * from(
select row_number()over(order by 排序条件)rn,* from tb
)t where rn>=pagesize*pageindex
论坛中分页程序很多,你可以搜一下.


row_……
[/Quote]
叶子 2012-02-12
  • 打赏
  • 举报
回复
SQL SERVER 有分页存储过程,你可以百度一下。
叶子 2012-02-12
  • 打赏
  • 举报
回复
SQL SERVER 2005及其以上版本可以用row_number()
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qianjin036a 的回复:]

MSSQL 也可以用 row_number 函数,类似于:
select top pagesize * from(
select row_number()over(order by 排序条件)rn,* from tb
)t where rn>=pagesize*pageindex
论坛中分页程序很多,你可以搜一下.
[/Quote]

row_number()over(partition...order by...)这个很好用,省了不少事啊
-晴天 2012-02-12
  • 打赏
  • 举报
回复
MSSQL 也可以用 row_number 函数,类似于:
select top pagesize * from(
select row_number()over(order by 排序条件)rn,* from tb
)t where rn>=pagesize*pageindex
论坛中分页程序很多,你可以搜一下.

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧