SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)
order by count(*)
ORDER BY DataID) AS T)
其中,n>=1
就能实现快速的分页,而且不论你的页面数据绑定控件是什么(DataList,DataGrid,还是Repeate都可以)。
FROM DATAS
语句形式:
row_number()over(ORDER BY DataID) AS ROWNUM,
或用第一种方法
FROM DATAS
order by dataid desc) A
如果不希望出现这种现象,可以在电子表格中插入结果时隐藏排序列,而是使用电子表格编号。
order by DataID;
select top 10 DataID from
FROM DATAS
select ceiling(1.0*@rowcount/@pagesize) as 总页数,@rowcount as 总行数,@curpage as 当前页
(SELECT MAX(DataID)
在SQL中,一般就这两种方法.
可以直接用来显示行号,当然也可以使用SQL 2000的identity
set nocount on
group by a1.au_lname, a1.au_fname
rank au_lname au_fname
5 del Castillo Innes
SELECT * FROM #1
复制代码 代码如下:
ORDER BY DataID----------- ---------------------------------------- --------------------
[DataID]
使用ROWNUM
@curpage int, --第N页
set @curpage=(@curpage-1)*@pagesize+1
(一)行号显示和排序
可以使用select into 创建临时表,在第一列,加入Identify(int,1,1)作为行号,
drop table #tmp
FROM DATAS
ORACLE的ROWNUM不能应用于大于,只能 ROWNUM= 1, 或者<= 大于1 的自然数
from authors a1 inner join authors a2 on a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname
1.使用自联接,所以该方法不适用于处理大量行。它适用于处理几百行。
select rank=count(*), a1.au_lname, a1.au_fname
1 Bennet Abraham
(二)SQL分页的几种方式
SELECT
WHERE ID >
4.分页方案四:(利用SQL的游标存储过程分页)
FROM DATAS;
order by DataID
6 Dull Ann
不用临时表,在SQL语句中,动态的进行排序.这种方法用到的连接是自连接,连接关系一般是
RowNum>PageIndex*PageSize And RowNum<=(PageIndex+1)*PageSize
(SELECT TOP 20 DataID
代码基于pubs样板数据库
declare @P int, --P是游标的id
FROM DATAS
2.使用自连接
ORDER BY DataID)
1.分页方案一:(利用Not In和SELECT TOP分页)
优点:
[DataID]
缺点:
ORDER BY DataID
2.分页方案二:(利用ID大于多少和SELECT TOP分页)
ROWNUM,
2.不能正常处理重复值。当比较重复值时,会出现不连续的行编号。
运行结果:
7 Greene Morningstar
SELECT TOP 10 *
SELECT TOP 10 *
@sql nvarchar(8000), --查询字符串
exec sp_cursoropen @P output,@sql,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output
2 Blotchet-Halls Reginald
复制代码 代码如下:
INTO #1
SELECT
1.使用临时表
3.分页方案三
identity(int,1,1) AS ROWNUM,
exec sp_cursorfetch @P,16,@curpage,@pagesize
select * frm #tmp
select IDentify(int,1,1) 'RowOrder',au_lname,au_fname into #tmp from authors
语句形式:
[DataID]
A.SQL 2000使用identity(int,1,1)和临时表,可以显示行号
set nocount on
4 DeFrance Michel
复制代码 代码如下:
SELECT3 Carson Cheryl
方法整理如下:
2.ORACLE的行号显示
exec sp_cursorclose @P
大于,
对于大型表,一定要使用索引以避免进行大范围的搜索,或用第一种方法.
复制代码 代码如下:
FROM DATAS where ROWNUM<=n
这样在产生的临时表中,结果集就有了行号.也是目前效率最高的方法.
在结果集中插入了行号,现在就可以将结果集合缓存起来,然后使用DataView,加入过滤条件
@pagesize int --每页行数
B.SQL 2005提供一个很好用的函数row_number(),
这里如果添加排序功能,则先排序再添加行号
FROM (SELECT TOP 20 DataID
@rowcount int
这些查询可以用于视图和结果格式设置中
select top n [DataID] from DATAS
set nocount off
FROM DATAS
注意:先加行号再排序,如果想排序好再加行号就要使用子查询
[DataID]
... ....
SELECT
如果你使用的是DataGrid,那么建议不要使用这种技术。因为DataGrid的分页效率和它差不多。 (SELECT top 30
B.ORACLE版
A.SQL版
这种方法不能用于视图
以每页10条数据为例,查询第三页数据,即21-30这些记录
1.SQL Server的行号
复制代码 代码如下:
WHERE DataID NOT IN[DataID]
create procedure SqlPager
as
3.取前n条数据
ORDER BY DataID
复制代码 代码如下:
相关热词: 分页
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/sql/mssql/2116.shtml
相关文章
热门TAG
命令 权重 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 服务器 网站流量 实例解析 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows SEO优化 蜘蛛 搜索引擎 网站收录 JSP最新文章
-
sql server 关于设置null的一
时间:2020-12-28
-
详解SQL游标的用法
时间:2020-12-27
-
vs code连接sql server数据库步
时间:2020-12-27
-
图书管理系统的sqlserver数
时间:2020-12-25
-
详解SQL 通配符
时间:2020-12-25
-
sql四大排名函数之ROW_NUM
时间:2020-12-25
-
SQLServer数据库处于恢复挂
时间:2020-12-24
-
Win10 64位安装个人版SQL20
时间:2020-12-24
热门文章
-
sqlserver中查询横表变竖表的sql语句简析
时间:2020-12-08
-
关于SQL Server查询语句的使用
时间:2020-12-13
-
SQL Server简单模式下误删除堆表记录恢复方
时间:2020-12-12
-
MSSQL教程_mssql数据库教程_MSSQL基础教程_第
时间:2020-12-13
-
详解SQL游标的用法
时间:2020-12-27
-
sql server 关于设置null的一些建议
时间:2020-12-28
-
jdbc连接sql server数据库问题分析
时间:2020-12-10
-
mssql关于一个表格结构的另外一种显示(表
时间:2020-12-11
-
SQL Server数据库入门学习总结
时间:2020-12-10
-
使用SqlBulkCopy时应注意Sqlserver表中使用缺
时间:2020-12-09
