CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

怎么用SQL语句实现,从数据库中提取符合指定条件的前n条记录?

楼主ttoomm(桥风)2001-12-01 21:45:37 在 MS-SQL Server / 基础类 提问

用SQL语句,指定一定的条件,从数据库中提数据。如果数据量很大的话,会花很多时间。  
  所以,我想分页显示。一次只取n条记录,显示在页面上。翻页时,再取下n条记录……。  
  这样,所花的时间,就会被分解。不会感觉时间延迟。  
   
  可该怎么实现呢? 问题点数:100、回复次数:4Top

1 楼phoenixxu()回复于 2001-12-01 21:47:36 得分 50

select   top   10   *  
  from   ...  
  Top

2 楼ttoomm(桥风)回复于 2001-12-01 21:58:03 得分 0

如果,想取出第10条到第20条的记录呢?Top

3 楼Haiwer(海阔天空)回复于 2001-12-01 22:07:17 得分 0

http://www.csdn.net/expert/Topic/266/266094.shtmTop

4 楼seafo(海之牙)回复于 2001-12-01 22:22:58 得分 50

我在前面已经发过类似问题的回复这里再copy一遍  
   
  1、可以用游标实现  
  declare   @beginId   int  
  declare   @endId   int  
  declare   @sql   varchar(255)  
  DECLARE   cursor1   CURSOR   FOR   SELECT   id   FROM   [table1]   order   by   id  
  open   cursor1    
  FETCH   ABSOLUTE   1000   FROM   cursor1   into   @beginId    
  FETCH   relative   1000   FROM   cursor1   into   @endId    
  set   @sql='select   *   from   [table1]   where   id   between   '+@beginId+'     and   '+@endId    
  exec(@sql)  
  可以取出1000-2000的记录  
  坏处是只能按id排序  
  2、用临时表  
  (设table1有id,部门,两个字段,id是唯一值)  
  select   top   2000   *   into   #temp   from   [table1]   order   by   部门   desc,id   desc  
  select   top   1000   *   from   #temp   order   by   部门   asc,id   asc  
  这样可以按部门排序并实现翻页效果,加上id是保证在部门大量重复的情况下仍能得出正确结果,显示的时候再按照(部门   desc,id   desc)的顺序显示,缺点是到后面效率低,没有游标的效率高      
  修正一下:上面所说的第二个方法也可以这样实现  
  (设table1有id,姓名,部门,三个字段,id是唯一值)  
  create   table   #temp  
  (id   int   IDENTITY(1,1),  
  部门   varchar(10),  
  姓名   varchar(20)  
  )  
  insert   into   #temp   select   部门,姓名   from   [table1]   order   by   部门   desc  
  select   *   from   #temp   where   id>1000   and   id<2001  
  可实现按部门排序的翻页且效率高,不过#temp的id一定要是IDENTITY,且insert   into的时候table1.id不能选  
  不知道   between   和   where   id>1000   and     id<2001哪个效率高,你可以实验一下    
  Top

相关问题

  • 请问如何设计一个sql语句提取前n条记录,类似于sql server的top语句功能?(不用存储过程)
  • 将重复记录提取出来(不能用SQL语句)
  • 怎样提取指定字符串?(T-SQL语句)
  • 问题:SQL语句的提取的问题!
  • sql 语句中关于对字段 null 值的提取?
  • 求从身份证中提取生日的SQL语句
  • SQL 语句提取记录的排续问题
  • 关于用sql语句提取时间字段中变量的问题?
  • 请问,提取存储过程代码的SQL语句是什么。
  • 如何提取ACCESS的表(或其他对象)的SQL语句啊?

关键词

  • top
  • sql
  • beginid
  • endid
  • 实现
  • 部门
  • n条记录
  • cursor
  • 显示
  • desc

得分解答快速导航

  • 帖主:ttoomm
  • phoenixxu
  • seafo

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo