按页取得数据
来源:互联网 发布:东华软件经营现金流 编辑:程序博客网 时间:2024/05/24 05:46
有两种写法,内容在SQL Server 2005下测试通过
基础表信息:
CREATE TABLE [dbo].[Student](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[Age] [int] NULL,
[RegisterTime] [datetime] NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
方法1):
declare @pageNum int
declare @pageSize int
set @pageNum = 2
set @pageSize = 10
select Top (@pageSize) * from Student where ID not in (select top (@pageSize* (@pageNum -1)) ID from Student order by ID) order by ID
方法2)
declare @pageNum int
declare @pageSize int
set @pageNum = 2
set @pageSize = 10
select * from
(select top(@pageSize) *
from (select top (@pageSize* @pageNum) * from Student order by ID) T1
order by T1.ID desc) T2
order by T2.ID
方法1)的思路是先排序后取出前PageNum-1页的数据,然后再取得不包含其中的哪些数据,排序后取得前PageSize的数据
方法2)的思路是正向排序后,先取得前PageSize *PageNum页的数据,然后再逆向排序后,取得前PageSize的数据,然后再正向排序。
语法注意点:
1)Sqlserver中使用TOP N是,如果N是一个常数,如 TOP 10 ,则可以不用加括号。 否则,如果是一个 表达式 如 TOP (10*2) 或者 TOP(@PageSize*@PageNum) 则 必须加括号,否则编译不通过
2)多级嵌套时,必须为临时表创建一个别名,因为order by ID 这时候是认不出来的,必须要加上别名前缀。 参照方法二中的写法
- 按页取得数据
- ABAP动态取得数据
- ABAP动态取得数据
- 取得表格中的数据
- 取得ajax数据
- 从数据库取得数据
- sql2000 取得数据表字段名
- 取得Word 表格中的数据
- 取得Word文件的数据
- 取得资源文件中的数据
- 取得Excel中实际数据
- 从数据库取得时间数据
- 利用FTP协议取得数据
- 如何取得视频流数据?
- datagrid更新数据。取得textbox中的数据
- 浅谈无刷新取得远程数据技术
- 浅谈无刷新取得远程数据技术
- PHP无法取得表单提交的数据
- Email Bounce Code Explanations
- CVS使用手册
- jxl的部分方法总结
- magento -- 在magento中如何调用static block?
- Silverlight WCF 初尝小结
- 按页取得数据
- ASP.NET自定义控件组件开发 第二章 继承WebControl的自定义控件
- 关于ORACLE触发器的owner
- 刪除xml Element中的屬性
- Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
- 在需要的时候用javascript收缩文本高度
- 什么是IIS应用程序池以及应用程序池详解
- cvs相关工具下载地址总结
- 20090424