SQL Server的分页
1.SQL Sever 2000
[1]取第一页的分页SQL语句如下:
SELECT TOP 页大小 字段列表 FROM 表名 WHERE语句 ORDER BY语句
[2]取其它页的分页SQL语句如下:
SELECT TOP 页大小 字段列表 FROM 表名 WHERE语句 ORDER BY语句
【使用自增列与临时表】
select identity(int,1,1) recid,选取字段列表 into #temp from 表名 order by 排序字段列表;
select * from #temp t where t.recid> (页编号-1)*页大小 and t.recid< 页编号*页大小;
drop table #temp;
2.SQL Server 2005---
SELECT * FROM
( SELECT *,
ROW_NUMBER() OVER (PARTITION BY 分栏目字段 ORDER BY 排序字段) AS ROWNUMBER
FROM 表
) B
知识点:SqlServer 序号列的实现方法
(1)对于 SQL SERVER 2000 及更早的版本,需要使用一个自增列,结合临时表来实现。
代码如下:
SELECT [AUTOID] = IDENTITY(int,1,1), * INTO #temp_table FROM 表名;
SELECT * FROM #temp_table;
仅当 SELECT 语句中有 INTO 子句时,才能使用 IDENTITY 函数。
(2)从SQL SERVER 2005 开始, SQL SERVER 提供了一个 ROW_NUMBER() 函数,大大简化了工作。
代码如下:
SELECT *,ROW_NUMBER() OVER (ORDER BY 排序字段) AS [AUTOID] FROM 表名;
序号字段的别名,可以在后续的条件中使用。
---------------------------------------------------------------------------------------------------
identity(seed,range) 创建一个标识列,与null,not null并列。seed表示种子,即初始值;range表示增长幅度。
局部临时表 #xxx ,只能被当前会话访问,在该会话结束后自动消失。
全局临时表 ##xx , 可以供多个用户使用,在该会话结束后自动消失。
---------------------------------------------------------------------------------------------------
#表示局部临时表,局部临时表只对创建它的会话时可见的。会话结束后,临时表自动删除。若由存储过程创建,则存储过程结束时删除临时表。比如过程A调用存储过程B时,A看不到B的临时表。若B被A1,A2,A3多个过程调用,则同一时刻可能存在多个B的临时表。
##表示全局临时表,全局临时表对所有活动会话都可见。所有访问完成后,才会自动删除。比如上例中,A,A1,A2,A3都可以看到B的临时表。
posted on 2012-04-18 23:32 LeeXiaoLiang 阅读(175) 评论(0) 收藏 举报