博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACCESS的分页之道,Access中实现row_number() over()聚合函数功能
阅读量:6260 次
发布时间:2019-06-22

本文共 795 字,大约阅读时间需要 2 分钟。

oracle的分页查询可以利用rowid伪列。 db2的分页查询可以利用row_number() over()聚合函数。 mysql有limit。 access仿佛先天缺陷,仅提供了top n。那如何利用top来实现分页查询呢? 假设在access中有表t1 create table t1( tc1 varchar(50) not null primary key, tc2 varchar(30), tc3 varchar(30) ) 随机插入20条数据。如果以每页5条来显示数据,如果要显示11至15条如何显示?利用top n功能,前11条可以用以下sql完成。 select top 11 tc1,tc2,tc3 from t1 同样前15条也可以这样: select top 15 tc1,tc2,tc3 from t1 想要得到11条到15条,估计一般都会想到差集,但access没提供差集except,可以利用not in实现。 select top 15 tc1,tc2,tc3 from t1 where tc1 not in (select top 10 tc1 from t1) 如果是一个比较大的表,用not in不能利用索引,使和效率极其低下,又该如何呢?可以利用左连接来解决问题 select a.* from ( select top15 tc1,tc2,tc3 from t1) a left join ( select top 10 tc1,tc2,tc3 from t1 ) b on a.tc1=b.tc1 where iif(b.tc1,'0','1')='1' 这种sql的好处是显而易见的,他有效的利用了表的主键索引。当然,由于access不能这样判断b.tc1 is null,所以要改用iif(b.tc1,'0','1')='1' 来曲线救国

转载地址:http://erqsa.baihongyu.com/

你可能感兴趣的文章
Oracle 导入外部文件数据库
查看>>
oracle与sqlserver区别
查看>>
HQL: Hibernate查询语言
查看>>
java生成随机字符串uuid
查看>>
client 如何找到正确的RegionServer(HBase -ROOT-和.META.表)
查看>>
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
查看>>
How to update WPF browser application manifest and xbap file with ‘mage.exe’
查看>>
php创建token
查看>>
centos 7 执行 groupinstall报错
查看>>
实战react技术栈+express前后端博客项目(5)-- 前后端实现登录功能
查看>>
MySQL 前缀索引——让索引减负狂奔
查看>>
Android基础 四大组件之广播(Broadcast)
查看>>
SQL优化器原理 - 查询优化器综述
查看>>
微服务架构 vs SOA架构
查看>>
maven项目注意
查看>>
Git学习分享
查看>>
阿里云移动端播放器高级功能---画面控制
查看>>
Ethereum地址是如何生成的
查看>>
峰采 #2
查看>>
高阶组件之属性代理
查看>>