mssql2000分页查询

(八)基于MuJoCo的LeRobot SO100仿真操控实战指南(操作优化) 本文详细介绍了如何在MuJoCo仿真环境中搭建并优化LeRobot SO100机械臂的操控。通过两种核心模式(纯键盘仿真与实机镜像同步)的实战演示,重点讲解了关键的参数标定方法,以实现虚拟模型与真实硬件的精准同步。文章还提供了性能优化技巧,旨在帮助开发者构建高效、安全的机器人算法开发与测试流程。 阅读详情

分页sql查询在编程的应用很多,主要有存储过程分页和sql分页两种,我比较喜欢用sql分页,主要是很方便。为了提高查询效率,应在排序字段上加索引。sql分页查询的原理很简单,比如您要查100条数据中的30-40条,您先查询出前40条,再把这30条倒序,再查出这倒序后的前十条,最后把这十条倒序就是您想要的结果。
下面把sql分页查询的原理用sql语句表现一下:

-- 分页 升序(搜出的结果再倒序)
SELECT TOP 10 * FROM (SELECT TOP 40 * from A01 ORDER BY A00 ASC) AS T ORDER BY A00 DESC

-- 分页 升序
SELECT * FROM (SELECT TOP 10 * FROM (SELECT TOP 40 * from A01 ORDER BY A00 ASC) AS T ORDER BY A00 DESC) AS T1 ORDER BY A00 ASC

-- 分页 降序(搜出的结果再倒序)
SELECT TOP 10 * FROM (SELECT TOP 40 * from A01 ORDER BY A00 DESC) AS T ORDER BY A00 ASC

-- 分页 降序
SELECT * FROM (SELECT TOP 10 * FROM (SELECT TOP 40 * from A01 ORDER BY A00 DESC) AS T ORDER BY A00 ASC) AS T1 ORDER BY A00 DESC

为了应用的方便我把生成sql分页查询语句的写成了类SplitHelp

应用如下:

/// <summary>
/// 分页查询例子
/// </summary>
/// <param name="currentPage">当前页</param>
/// <param name="pagesize">每页大小</param>
/// <param name="count">数据总条数</param>
/// <param name="cn">数据库连接</param>
/// <returns>查询IDbCommand</returns>
public IDbCommand Search(int currentPage, int pagesize, out int count, IDbConnection cn)
{
//得到IDbCommand
IDbCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;

cmd.CommandText = "select count(tableTestID) from tableTest";
if (cn.State != ConnectionState.Open)
cn.Open();
//得到数据总数
count = (int)cmd.ExecuteScalar();

//搜索的前n条
int topAll = SplitPage.GetTopNum(currentPage, pagesize, count);

//排序字段类
AscDescClass ascDesc = new AscDescClass("tableTestID", AscDescEnum.desc);
//ascDesc.Add("tableTestID1", AscDescEnum.desc);

//此sql语名必须有排序,写出要查询前topAll条记录的sql
string sql = String.Format(@"select top {0} * from tableTest order by {1}", topAll, ascDesc.GetAscDesString());

//最终sql
cmd.CommandText = SplitPage.GetFinalSql(sql, ascDesc, pagesize, count, topAll, currentPage);

return cmd;
}
当然,要想真正提高查询效率,最好还是用存储过程,这里写了两个例子,一个真对sql2000,一个真对sql2005

sql2000
create proc usp_UserGoldHistoryByDateRange
(
@StartDate varchar(10),
@EndDate varchar(10),
@PageSize int,
@PageIndex int,
@RowCount int out
)
as
declare @StartRow int
declare @EndRow int
-- 计算当前页开始行
set @StartRow = (@PageIndex - 1) * @PageSize 1
-- 计算当前页结束行
set @EndRow = @StartRow @PageSize - 1

-- 建一张内存表用于存储检索结果
declare @temp table
(
AutoID [int] IDENTITY (1, 1) NOT NULL,
RowID [int]
)
-- 执行检索
insert into @temp(RowID)
select RowID from UserGoldHistory
where left(DateTimeTag,10) between @StartDate and @EndDate

set @RowCount = @@ROWCOUNT

select * from UserGoldHistory where RowID in (
select RowID from @temp where AutoID between @StartRow and @EndRow)

sql2005
create proc proc_Split
-- 配置每页的行数
@page_size int,
-- 配置当前页
@page_current int,
-- 总记录数
@rows_count int out
as

select @rows_count=count(UserName) from ForumUser

DECLARE @start_row_num int
DECLARE @end_row_num int
-- 配置开始行号
SET @start_row_num = (@page_current - 1) * @page_size 1
-- 配置结束行号
SET @end_row_num = @start_row_num @page_size - 1;

WITH temptesttable AS
(
SELECT ROW_NUMBER() OVER(ORDER BY UserName) AS row_number, *
FROM ForumUser
)
SELECT * from temptesttable
WHERE row_number BETWEEN @start_row_num AND @end_row_num

posted on 2006-12-09 19:22 来问(zljGood@hotmail.com) 阅读(517) 评论(4) 编辑 收藏 引用 网摘 所属分类: SQL技术


评论
# re: 分页查询的一个帮助类 2006-12-10 11:03 THIN
SQL语句何必要用临时表呢,要是要第100页呢,不是要先把几千条数据查出来?
子查询查出ID就行了吧 回复 更多评论

# re: 分页查询的一个帮助类 2006-12-10 13:19 S.Sams
数据一多,性能方面还是得考虑 回复 更多评论

# re: 分页查询的一个帮助类 2006-12-10 16:35 来问(zljGood@hotmail.com)
@THIN

当然,要想真正提高查询效率,最好还是用存储过程,这里写了两个例子
多谢

sql2000
create proc usp_UserGoldHistoryByDateRange
(
@StartDate varchar(10),
@EndDate varchar(10),
@PageSize int,
@PageIndex int,
@RowCount int out

)
as
declare @StartRow int
declare @EndRow int
-- 计算当前页开始行
set @StartRow = (@PageIndex - 1) * @PageSize 1
-- 计算当前页结束行
set @EndRow = @StartRow @PageSize - 1

-- 建一张内存表用于存储检索结果
declare @temp table
(
AutoID [int] IDENTITY (1, 1) NOT NULL,
RowID [int]
)
-- 执行检索
insert into @temp(RowID)
select RowID from UserGoldHistory
where left(DateTimeTag,10) between @StartDate and @EndDate

set @RowCount = @@ROWCOUNT

select * from UserGoldHistory where RowID in (
select RowID from @temp where AutoID between @StartRow and @EndRow)

sql2005
create proc proc_Split
-- 配置每页的行数
@page_size int,
-- 配置当前页
@page_current int,
-- 总记录数
@rows_count int out
as

select @rows_count=count(UserName) from ForumUser

DECLARE @start_row_num int
DECLARE @end_row_num int
-- 配置开始行号
SET @start_row_num = (@page_current - 1) * @page_size 1
-- 配置结束行号
SET @end_row_num = @start_row_num @page_size - 1;

WITH temptesttable AS
(
SELECT ROW_NUMBER() OVER(ORDER BY UserName) AS row_number, *
FROM ForumUser
)
SELECT * from temptesttable
WHERE row_number BETWEEN @start_row_num AND @end_row_num


本文转自:http://hi.baidu.com/liulin0712/blog/item/ae664cc69e342b119c163d0b.html

软件设计师考试下午题代码部分详解:23种设计模式全面解析 软件设计师考试的下午题通常会考察设计模式的应用,这部分内容既是重点也是难点。本文将系统地介绍考试中常见的23种设计模式,通过详细代码示例和通俗易懂的讲解,帮助考生掌握这些核心知识点,提高应试能力。概念:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。适用场景:系统要独立于产品的创建、组合和表示时;系统要由多个产品系列中的一个来配置时。@Override@Override@Override@Override// 产品族A@Override。 阅读详情

相关推荐

告别玄学:用Multisim或LTspice仿真带你直观理解PFC的三种工作模式(CCM/DCM/CrM)

本文通过Multisim和LTspice仿真工具,详细解析了PFC(功率因数校正)的三种工作模式(CCM、DCM、CrM)的本质差异。从波形捕捉到参数优化,提供了实用的仿真技巧和工程实践策略,帮助工程师直观理解并优化PFC电路设计,提升THD和功率因数。

weixin_30363285的博客 395

sql2000海量数据库的查询优化及分页算法

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页。以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL , --本表的id号,也是主键

随影 1852

电力系统实时仿真技术:从硬件在环到主流平台实践

实时仿真是一种基于高性能计算硬件,在严格时间约束下模拟物理系统动态行为的关键技术。其核心原理在于通过硬实时计算,确保仿真步长内的模型求解与输出时间严格同步,从而构建高保真的虚拟测试环境。这项技术的核心价值在于为电力电子、新能源并网等复杂系统的研发提供了无风险的“数字沙盘”,能够安全地验证控制器逻辑、保护装置动作及系统稳定性。在工程实践中,硬件在环测试通过连接虚拟模型与真实硬件,形成了控制器硬件在环和功率硬件在环两大主流应用场景,广泛应用于设备研发、电网安全分析和人员培训。本文聚焦于电力系统领域,深入解析了实

weixin_30952479的博客 420

SQL Server 2000 分页查询

分别用 NOT IN 和 NOT EXISTS 实现: NOT IN: select TOP 10 * FROM student WHERE id not in (SELECT TOP (2*10) id FROM student) NOT EXISTS: SELECT TOP (10) * FROM student AS s1 WHERE NOT EXISTS (   SELECT

浅醉樱花雨的专栏 1061

主成分分析(PCA)和局部线性嵌入(LEE)原理详解

从KNN谈“维度灾难”,介绍线性降维PCA和局部线性嵌入LLE 这两种降维方法的原理

superzzx0920的博客 5616

对族实例进行任意的矩阵变换,需要什么样的族?

问:一个小问题,想向您请教一下。 能不能实现一个这样的操作:创建了一个常规模型的FamilyInstance,然后知道旋转和平移的矩阵,能否根据变换矩阵更新FamilyInstance的位置,绕任意轴旋转任意角度。 请问什么样的实体才能在revit项目文件中任意旋转?貌似一般的实例只能在XY平面内旋转,并且LocationPoint中只有一个Rotation参数。答:您好,因为Revit里面的构件

我爱Revit —— BIM应用及BIM应用软件解决方案专栏 3628

SQL SERVER 2000 高效分页查询语句

        ///         /// 将已经存在的SQL语句包装成分页SQL存储过程。        ///         /// 已经存在的SQL语句。        /// 对于已经存在的SQL语句中能唯一标识的字段名称。        /// 对于key在SQL中的类型名称。        /// 分页起始记录索引号。        /// 每页最大记录数。        ///

yejiansnake的专栏 6315

C++11并发与多线程笔记(2) 线程启动、结束,创建线程多法、join,detach

第二节 线程启动、结束,创建线程多法、join,detach 一、范例演示线程运行的开始 程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;当主线程从main()函数返回,则整个进程执行完毕 主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数),一旦这个函数运行完毕,线程也结束运行 整个进程是否执行完毕的标志是:主线程是否执行完,如果主线程执行完毕了,就代表整个进程执行完毕了,此时如果其他子线程还没有执行完,也会被强行终止【此条有例外,以后会解释】 创建

qq_38231713的博客 1万+

sqlserver2000分页查询语句

top 5 表示 pagesize 一页显示多少条。top ((2-1)*5) 中的2 表示 第几页。

全粘工程师 497

当Kmer遇到多倍体:复杂基因组Survey分析中的避坑指南

本文针对小麦、棉花等多倍体及高杂合复杂基因组的Survey分析,深入解析了Kmer分布图解读中的常见陷阱。文章重点探讨了如何超越理想二倍体模型,利用Smudgeplot等工具准确判断基因组倍性,并提供了从参数优化、污染判断到结果验证的全流程实战指南,帮助研究者规避错误,获得更准确的基因组大小、杂合度等关键信息。

yhn45678901的博客 1008

4.6 知识库使用指南:如何让AI Agent拥有专业知识

本文介绍了如何为AI Agent构建和使用知识库。知识库的作用是为Agent提供专业知识,包含文档、数据和规则,可用于专业问答和知识检索。使用方法包括创建知识库(上传文档)、向量化处理、知识检索以及在Agent中的应用。核心要点是理解知识库的价值和使用流程。文章还提出了构建方法、检索优化和应用实践等思考题,建议准备高质量数据、优化检索效果并持续更新知识库。下节将介绍用LangGraph构建复杂AI应用。

yonggeit的博客 3011

MSSQL 分页查询的两种方法

一 使用 not  in  和 top关键字实现分页   1  查询recharge表里的第1页的数据,每页2条数据-----使用top ,in关键字实现分页(recharge共5条数据,每页两条数据) select top 2 * from recharge -- 第一页的数据 2  查询recharge表里第二页的数据,每页2条数据 select top 2 * from rechar

nocomment_84的博客 5349

数学建模学习(120):使用Python实现基于AHP的供应商选择分析

使用Python实现基于AHP的供应商选择分析

全栈川川 912

Hibernate5.1+Sqlserver2000分页查询

前几天改到一个bug:从MS SQLserver上面同步表结构并且采集数据写入其他库。然后用的核心技术是用的Hibernate。 其中bug出在SQLServer2000版本上。排查下来发现2000版本真的是一个让人头疼的数据库。 驱动jar包不兼容;hibernate5.1分页查询也不能用。系统表也与其他版本的天差地别。 一、驱动问题 一开始上网查询,发现大家都推荐用JTDS驱动。...

weixin_30480651的博客 209

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

sqlserver2000 +springboot 如何带查询条件进行分页查询?

sqlserver2000分页使用不了offset,原生sql查询出错。 /** * 通过原生 SQL 分页查询返回 List<Map> - 多条记录 * * @param sql 原生 SQL 语句 * @param pageable Pageable * @return List<Map<String, Object>> */ @SuppressWarnings("unchecked")

qq_25529689的博客 831

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SQLServer的3种分页查询方式sql2000/2008/2012的

判断版本,然后执行 -- select serverproperty('productversion'),serverproperty('productlevel'),serverproperty('edition'), @@VERSION --SQL2000:8.00.194 RTM Personal Edition Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 19

gssystems的专栏 368

记录sqlserver2000的一次分页查询

【代码】记录sqlserver2000的一次分页查询。

m0_62681080的博客 424

ibatis,oracle,sqlserver 2000分页查询

前台Ext,后台ibatis  数据库分页   ORACLE: SELECT * FROM (SELECT  A.* ,ROWNUM RN FROM 表名 A WHERE  字段名 LIKE ('%'||#字段名#||'%') ORDER BY $orderBy$ $orderType$) WHERE RN&gt;#start# AND RN&lt;=#start#+#limit#   ...

Blackbaby 140

MSSQL2000和2005的分页

- 如果@RecordCount为NULL值,则计算总页数(这样设计可以只在第一次计算总页数,以后调用时,把总页数传回给存储过程,避免再次计算总页数,对于不想计算总页数的处理而言,可以给@RecordCount赋值)

weixin_67271870的博客 89

MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法

在这里主要讲解一下MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法。 可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应用总结归纳一下,以方便大家查询使用。 下面就分别给大家介绍、讲解一下三种数据库实现分页查询的方法。 一、 MySQL 数据库分页查询 MySQL数据库实现分页比较简单,提供了LIMIT函数。一般

Heaven_of_relaxing的博客 521

http://blog.youkuaiyun.com/hxcfindjob(AJAX学习)

http://blog.youkuaiyun.com/hxcfindjob(AJAX学习)http://blog.youkuaiyun.com/hxcfindjobSELECT 查询字段 FROM( SELECT 表别名.*, rownum as my_rownum FROM (  查询语句)  表别名 WHERE rownum ) WHERE        my_rownum >= 开始行行号;  《M

SQ 861

sqlserver2005和mysql_MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法...

在这里主要讲解一下MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法。可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应用总结归纳一下,以方便大家查询使用。下面就分别给大家介绍、讲解一下三种数据库实现分页查询的方法。一、 MySQL 数据库分页查询MySQL数据库实现分页比较简单,提供了LIMIT函数。一般只需要直接写到...

weixin_29095587的博客 241

sqlserver2000分页正解

近段时间基于SqlServer2000进行了一些分页测试,在网上搜到的分页(非存储过程方式)方案中大部分都存在细节的完善,特将正确的细节补充如下:网上搜到的分页实现如下:SELECT TOP 页大小 *FROM UsersWHERE (ID NOT IN (SELECT TOP (页大小*(页数-1)) ID FROM Users ORDER BY ID DESC))ORDER BY ID

系分之旅 825

asp+mssql2000存储过程

1.mssql2000存储过程 /*分页调用方法:exec sp_Util_Page 440000,4,10,MID,MID,ip1,ip2,country,city,tbTempPage,1=1,mid asc输入: 1.记录条数(已有值:外部赋值,0执行count) 2.当前页数 3.每页记录数 4.主键(一定要有) 5.字段 6.表名 7.条件(不需要where)

maoyun的专栏 1250

通用分页存储过程

/*通用分页存储过程 MS SQL Server 2005*/CREATE PROCEDURE Pagination( @TableName VARCHAR(255), -- 表名/视图名 @SelectFields VARCHAR(1000) = *, -- 需要返回的列 @Where VARCHAR(3000) = 1=1

晓春明月 510

MySQL、SqlServer、Oracle三大主流数据库分页查询

在这里主要讲解一下MySQL、SQLServer2000、ORCALE三种数据库实现分页查询的方法。 下面就分别给大家介绍、讲解一下三种数据库实现分页查询的方法。 一、       MySQL 数据库分页查询 MySQL数据库实现分页比较简单,提供了 LIMIT函数。一般只需要直接写到sql语句后面就行了。  LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两

小和尚的专栏 459
上一篇: Server&nbsp;2000/2005&nbsp;分页
下一篇: Microsoft+Office++2007+文件格式…
jarry.liu
博客等级 码龄16年 36粉丝 304原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jarry.liu

如果对您有帮助,鼓励下博主吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值