sqlserver的翻页sql
来源:互联网 发布:制作ppt的软件 编辑:程序博客网 时间:2024/05/20 08:43
sqlserver中没有像mysql那样的limit,所以要分页就显示比较麻烦一点,传统上的asp程序中把结果集取出来再分页,显然在多数据的情况下这么做的速度是很慢的。
所以今天花了一点时间,模拟了一下mysql的分页方法。个人认为还是比较高效。那么我们就来看看sql:
select top 30 * from user_admin where id<= (select min(id) from user_admin where id in( select top 1 id from user_admin where admin_tour<>'yes' order by id desc))and admin_tour<>'yes' order by id desc
这第语句的作用就是对user_admin表分页,每页30条记录.
总的查询思想是:假设我们每页要取j条,当我们要取第n页的时候,那么我们把第n*j的记录都不算,从这个值的下一个值开始计算,再取出j条记录。那么这个结果就是我们想要的.
步骤分三步,
一是找到前面几页的记录数:
select top 1 id from user_admin where admin_tour<>'yes' order by id desc这里的 top 1是变化的,第一页就是1,第二页就是1+n*j
第二步就是计算第一步找到的最最那条记录的id.(示例中,我是按id的降序排的,所以用了min函数).
select min(id) from user_admin where id in( select top 1 id from user_admin where admin_tour<>'yes' order by id desc)
第三步就是我们真正想要的:在表中从这个值往后取n条记录,就是我们想要的记录集了.
select top 30 * from user_admin where id<= (select min(id) from user_admin where id in( select top 1 id from user_admin where admin_tour<>'yes' order by id desc))and admin_tour<>'yes' order by id desc
当然再把这个语句封装成存储过程,查询的效率就更快些。
网上有一个用not in 的方法,不过这种方法当数据量大时很耗时,效率不高.
- sqlserver的翻页sql
- Oracle的翻页SQL
- sqlserver翻页
- Oracle的翻页Sql语句
- Oracle的翻页Sql语句
- Oracle的翻页Sql语句
- Oracle的翻页Sql语句
- sql翻页
- sqlserver中的翻页
- SQLServer的分页SQL
- ORACLE翻页SQL语句
- 通用翻页.sql
- SQL 翻页查询
- oracle没有序列号的表实现翻页的sql语句
- db2,sqlserver的更新sql
- sqlserver检查死锁的sql
- 一个sql语句的优化及oracle翻页
- SQL SERVER 一个简单统用的翻页函数
- android音乐播放器监听电话状态
- GIS程序设计实验报告及源码 HFUT GIS
- Perl 简介
- 读书抓书眼
- 4.创建数据库表
- sqlserver的翻页sql
- 随手记记
- dom基础知识零碎笔记
- linux磁盘与文件系统管理
- SWT中显示图片
- 电脑关机命令
- 5.约束
- JAVA笔试题总结2:变量初始化
- 清荷