DataGrid连接Access的快速分页法(3)——SQL语句的选用(降序)

access|datagrid|分页|语句

DataGrid连接Access的快速分页法(3)——SQL语句的选用(降序)
三、降序
(1)@PageIndex <= @FirstIndex
SELECT TOP @PageSize @QueryFields
FROM @TableName
WHERE @Condition
ORDER BY @PrimaryKey DESC

(2)@FirstIndex < @PageIndex <= @MiddleIndex

SELECT TOP @PageSize @QueryFields
FROM @TableName
WHERE @PrimaryKey < (
SELECT MIN(@PrimaryKey) FROM (
SELECT TOP @PageSize*@PageIndex @PrimaryKey
FROM @TableName
WHERE @Condition
ORDER BY @PrimaryKey DESC
) TableA
) WHERE @Condition
ORDER BY @PrimaryKey DESC

(3)@MiddleIndex < @PageIndex < @LastIndex

SELECT * FROM (
SELECT TOP @PageSize @QueryFields
FROM @TableName
WHERE @PrimaryKey > (
SELECT MAX(@PrimaryKey) FROM (
SELECT TOP (@RecordCount-@PageSize*(@PageIndex+1)) @PrimaryKey
FROM @TableName
WHERE @Condition
-- ORDER BY @PrimaryKey ASC
) TableA
) WHERE @Condition
-- ORDER BY @PrimaryKey ASC
) TableB
ORDER BY @PrimaryKey DESC

(4)@PageIndex >= @LastIndex

SELECT * FROM (
SELECT TOP (@RecordCount-@PageSize*@LastIndex) @QueryFields
FROM @TableName
WHERE @Condition
ORDER BY @PrimaryKey ASC
) TableA
ORDER BY @PrimaryKey DESC

四、总结
通过上面的讨论,相信大家应该看到了该分页方法的优势所在。在下一篇中,我将给大家一个动态生成上面 SQL 语句的类。

时间: 2025-01-15 17:17:23

DataGrid连接Access的快速分页法(3)——SQL语句的选用(降序)的相关文章

DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序)

access|datagrid|分页|语句 DataGrid连接Access的快速分页法(2)--SQL语句的选用(升序)一.相关概念 在 ACCESS 数据库中,一个表的主键(PRIMARY KEY,又称主索引)上必然建立了唯一索引(UNIQUE INDEX),因此主键字段的值是不会重复的.并且索引页依据索引列的值进行排序,每个索引记录包含一个指向它所引用的数据行的指针.我们可以利用主键这两个特点来实现对某条记录的定位,从而快速地取出某个分页上要显示的记录. 举个例子,假设主键字段为 INTE

DataGrid连接Access的快速分页法(4)——动态生成SQL语句

access|datagrid|动态|分页|语句 DataGrid连接Access的快速分页法(4)--动态生成SQL语句using System;using System.Text;namespace Paging{ /// <summary> /// FastPaging 的摘要说明. /// </summary> public class FastPaging { private FastPaging() { } /// <summary> /// 获取根据指定字

DataGrid连接Access的快速分页法(5)——实现快速分页

access|datagrid|分页 DataGrid连接Access的快速分页法(5)--实现快速分页 我使用Access自带的Northwind中文数据库的"订单明细"表作为例子,不过我在该表添加了一个名为"Id"的字段,数据类型为"自动编号",并把该表命名为"订单明细表". FastPaging_DataSet.aspx---------------------------------------------------

DataGrid连接Access的快速分页法(1)——需求与现状

access|datagrid|分页 DataGrid连接Access的快速分页法(1)--需求与现状一.需求分析 DataGrid是一个功能强大的ASP.NET Web服务器端控件,它除了能够按各种方式格式化显示数据,还可以对数据进行动态的排序.编辑和分页.大大减轻了广大Web程序员的工作量.实现DataGrid的分页功能一直是很多入门者感到棘手的问题,特别是自定义分页功能,实现的方法多种多样,非常灵活. 目前大家公认性能最好的应该数SQL Sever结合存储过程的解决方案.因为在SQL Se

DataGrid基于Access的快速分页法

access|datagrid|分页 DataGrid是一个功能非常强大的ASP.NET Web服务器端控件,它除了能够方便地按各种方式格式化显示表格中的数据,还可以对表格中的数据进行动态的排序.编辑和分页.使Web开发人员从繁琐的代码中解放.实现DataGrid的分页功能一直是很多初学ASP.NET的人感到棘手的问题,特别是自定义分页功能,实现方法多种多样,非常灵活.本文将向大家介绍一种DataGird控件在Access数据库下的快速分页法,帮助初学者掌握DataGrid的分页技术. 目前的分

sql oracle-关于怎么快速执行10000条sql语句

问题描述 关于怎么快速执行10000条sql语句 由于我的数据库有几千万条数据,每一条查询都会花费0.5秒,但是10000条查询需要半个多小时,所以希望有快速一点的方法,求各位大神指点,下面是我的函数. /** * 这是一个横着的for循环,图的缩放级别是13,11*10方格,不同区域到不同区域的上车点数量 */ public static void CountListPointsOfOnetoOne() { ArrayList ListSql = new ArrayList(); double

ACCESS:跨数据库查询的SQL语句

access|数据|数据库|语句 问题说明:有时需要在两个或三个数据库的表中,通过相关关键字,查询获取所需记录集,用一般的SQL查询语句是实现不了的,可通过ACCESS的跨库查询功能实现.解决方法:例如"装材类型"和"装材"两张表是在不同的数据库中的,具体查询方法,如下:@"Select * from 装材类型 as a INNER JOIN [;database=" + AppDomain.CurrentDomain.BaseDirectory

浅谈mssql access数据库 top分页方法_MsSql

但是有利也有弊,它要求排序字段必须构成唯一记录,且select后的字段列表中,不允许出现与排序字段同名的字段.虽然sql2k5及以上版本已经提供了rownum()来进行分页处理,但是使用sql2k进行开发的还是较多的 复制代码 代码如下: uusing system.collections.generic;sing system;using system.text;/// <summary>/// 构造分页后的sql语句/// </summary>public static cla

浅谈mssql access数据库 top分页方法

但是有利也有弊,它要求排序字段必须构成唯一记录,且select后的字段列表中,不允许出现与排序字段同名的字段.虽然sql2k5及以上版本已经提供了rownum()来进行分页处理,但是使用sql2k进行开发的还是较多的复制代码 代码如下:uusing system.collections.generic;sing system;using system.text;/// <summary>/// 构造分页后的sql语句/// </summary>public static class