简单又高效的Access分页语句
转自:http://www.ljf.cn/archives/2281
Access实现分页其实也可以在查询语句里面做。
除了流行的top分页法之外,其实还有一种更简单,更容易理解,并且效率也不低的分页法。
先来一段传统的top分页法。
SELECT TOP 10 *
FROM TestTable
WHERE (ID >=
(SELECT MAX(id)
FROM (SELECT TOP 21 id
FROM TestTable
ORDER BY id) AS T))
ORDER BY ID
原理:
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID >=
(SELECT MAX(id)
FROM (SELECT TOP (页大小*(页数-1)+1) id
FROM 表
ORDER BY id) AS T))
ORDER BY ID
这种分页法效率不错,不过组合查询语句比较麻烦,尤其是当附带条件多的时候,看得人头脑发晕。参考:Sql分页的三种方法。其中的第一种采用Not In方式,效率很差,坚决反对使用。第三种方法,使用游标存储过程,在Access数据库中不通用。
下面介绍一种更简单的分页法
select * from news where nid between
(SELECT min(nid) from
(select top 4 nid from newsdata order by nid desc))
and
(SELECT min(nid) from
(select top 1 nid from newsdata order by nid desc))
order by nid desc
利用top和min函数分别找出分页的起始ID和结束ID,如果要按照升序排列,就要用top和max来找出起始ID和结束ID,之后在使用between语句直接选取。注意三个地方的排序方式必须一致,查询条件也必须一致。
简单又高效的Access分页语句的更多相关文章
- Access分页语句
一.双TOP法高效率的Access分页的SQL语句,语法格式: SELECT * FROM (SELECT TOP "&pagesize&" * FROM (SEL ...
- Access大数据高效分页语句
Access大数据高效分页语句 oracle的分页查询可以利用rowid伪列. db2的分页查询可以利用row_number() over()聚合函数. mysql有limit. access仿佛先天 ...
- Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理
最近把平时在项目中常用到的数据库分页sql总结了下.大家可以贴出分页更高效的sql语句.sqlserver分页 第一种分页方法 需用到的参数: pageSize 每页显示多少条数据 pageNumbe ...
- Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句
最近把平时在项目中常用到的数据库分页sql总结了下.大家可以贴出分页更高效的sql语句.sqlserver分页 第一种分页方法 需用到的参数: pageSize 每页显示多少条数据 pageNu ...
- [搜片神器]服务器SQL2005查询分页语句你理解了么
在sosobt.com网站准备采用Lucence.net来进行索引处理搜索慢问题的时候,突然发现常用的分页获取数据的row_number也支持不住了,后期查到200多万的时候非常慢(总数据有500万) ...
- SQL分页语句总结
今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 selecttop10*from Orders a where a.orderid notin(s ...
- 如此高效通用的分页存储过程是带有sql注入漏洞的
原文:如此高效通用的分页存储过程是带有sql注入漏洞的 在google中搜索“分页存储过程”会出来好多结果,是大家常用的分页存储过程,今天我却要说它是有漏洞的,而且漏洞无法通过修改存储过程进行补救,如 ...
- SQL点滴16—SQL分页语句总结
原文:SQL点滴16-SQL分页语句总结 今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 *from Orders orderid from Or ...
- Access 分页
access分页 pageSize 每页显示多少条数据 pageNumber 页数 从客户端传来 pages) SQL语句 select top pageSize * from 表名 where id ...
随机推荐
- OAF_文件系列6_实现OAF导出XML文件javax.xml.parsers/transformer(案例)
20150803 Created By BaoXinjian
- Flex air修改外部xml文件 (转)
AIR的文件操作不难,看完教程应该可以满足你对文件的所有基本操作.这篇教程主要以实际操作中遇到的情况来讲解 我们想想文件操作都会有什么内容,无非是创建,修改,删除,移动,拷贝.在这个过程中我们会涉及到 ...
- 那些年蹚过的坑(c++)
1 main中的参数 尽量用英文双引号括起来,否则可能会出现字符串截断的情况(linux gcc 4.4 不加英文引号的话,遇到英文;会丢弃;后面的部分) 2 包含ipv6地址结构体(in6_addr ...
- [手机取证] Apple正在行动起来封堵后门?
在被爆出“后门”事件后,苹果似乎已经开始了自己的行动,在最新发布的iOS 8 Beta5版本中,iOS取证专家Zdziarski提及的众多后台服务中的packet sniffer服务已经被禁用,体现出 ...
- Servlet基础
今天在学习Servlet的时候遇到了一个问题:大概是这样java.lang.ClassNotFoundException: HelloServlet at org.apache.catalina.lo ...
- SQLServer2008-镜像数据库实施手册(双机)SQL-Server2014同样适用
SQL Server2008R2-镜像数据库实施手册(双机)SQL Server2014同样适用 一.配置主备机 1. 服务器基本信息 主机名称为:HOST_A,IP地址为:192.168.1.155 ...
- js插件添加打印功能
<%@ page language="java" %> <%@ page contentType="text/html; charset=gb2312& ...
- 牛客网程序员面试金典:1.2——原串翻转(java实现)
问题描述: 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniString,请返回一个string,为翻转后的字符串. ...
- .NET牛人应该知道些什么
任何一个使用.NET的人 1.描述线程与进程的区别? 线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代 码和 ...
- Row_Number()显示行号
SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee Row_Number ...