一条sql 语句搞定数据库分页

2016-01-29 18:43 7 1 收藏

一条sql 语句搞定数据库分页,一条sql 语句搞定数据库分页

【 tulaoshi.com - ASP 】

 

antshome(原作)首发:CSDN

一条语句搞定数据库分页

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/asp/)

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

10 = 每页记录数

20 = (当前页 + 1) * 每页记录数

以上语句即可以实现分页,但是最后取出的结果排序是升序,如果需要结果集为降序(例如时间),则有两种方法可以处理

1.使用以下语句,但效率可能要降低一些

select * from 表名 b, (select top 10 主键字段,排序字段 from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a order by 排序字段 ) c where b.主键字段 = c.主键字段 order by c.排序字段 desc

2.在ado里处理,将记录集游标移到最后,然后前移

''以下为asp范例

set rsTemp = Server.CreateObject("adodb.recordset")

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/asp/)

rsTemp.Open 语句,conn,1,1

rsTemp.MoveLast

for i = 1 to rsTemp.RecordCount

 '取值....

rsTemp.MovePrevious

next

 

经测试,以上分页方法比使用临时表分页速度还要快,并且简单易用

 

 

来源:http://www.tulaoshi.com/n/20160129/1507004.html

延伸阅读
标签: SQLServer
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句 一、 简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 SELECT nickname,email FROM testtab...
--取得所有数据库名 包括系统数据库 --SELECT name FROM master.dbo.sysdatabases --取得所有非系统数据库名 --select [name] from master.dbo.sysdatabases where DBId6 Order By [Name] --取所有信息,包括数据库文件地址 --select * from master.dbo.sysdatabases where DBId6 Order By [Name]
标签: Web开发
代码如下: 本文相关代码如下: Access: select top n * from table order by rnd(id)'id为数据库的自动编号字段 Sql Server: select top n * from table order by newid() 但在ASP+Access中,或许是因为缓存的原因,第一条SQL语句无法得到预期的结果,而VB+Access则可以。解决办法是改用如下SQL语句:    本文相关代码如下: Rand...
锁定数据库的一个表 代码如下: SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 代码如下: SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 代码如下: SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删除 SELECT 语句中“加锁选项”的功能说明 SQL Server提供...
数据库结构的脚本: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TempA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[TempA] GO CREATE TABLE [dbo].[TempA] (  [id] [int] IDENTITY (1, 1) NOT NULL ,  [PositionName] [varchar] (256) COLLATE Chinese_PRC_CI_AS NULL , &nbs...

经验教程

393

收藏

12
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部