博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分页显示数据
阅读量:5033 次
发布时间:2019-06-12

本文共 856 字,大约阅读时间需要 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条如何显示?

1、利用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,

2、可以利用not in实现。 select top 15 tc1,tc2,tc3 from t1 where tc1 not in (select top 10 tc1 from t1) 如果是一个比较大的表,用not in不能利用索引,使和效率极其低下,又该如何呢?

3、可以利用左连接来解决问题 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' 来曲线救国

转载于:https://www.cnblogs.com/kedarui/p/3568401.html

你可能感兴趣的文章
《大道至简》读后感——论沟通的重要性
查看>>
hdu-5478 Can you find it(快速幂)
查看>>
JDBC基础篇(MYSQL)——使用statement执行DQL语句(select)
查看>>
UITextField实现字数限制
查看>>
在Azure上的VM镜像库中找到想要的镜像
查看>>
杭高OI20190125 (genies出题)
查看>>
Java远程连接redis, 报错 Connection refused: connect
查看>>
redis安装篇
查看>>
时间都去哪儿啦
查看>>
Modbus 通信协议详解
查看>>
深入JavaScript类型判定
查看>>
Linux 中shell 学习笔记
查看>>
Spring IOC之注解(1)
查看>>
Java递归
查看>>
Find Minimum in Rotated Sorted Array问题的困惑
查看>>
WIN10下的Docker安装
查看>>
关于IE6幽灵字体
查看>>
使用sysbench来测试MySQL性能的详细教程
查看>>
nginx tp5配置
查看>>
javascript template
查看>>