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

怎样控制SQL SERVER返回的记录数???

楼主small_wolf()2000-03-23 21:02:00 在 MS-SQL Server / 基础类 提问

比如建立一个查询,我想返回SELECT   *   FROM   TABLE   结果集的第100到第150条记录  
  如果不用游标能否实现 问题点数:50、回复次数:12Top

1 楼King(傻勤)回复于 2000-03-23 21:25:00 得分 0

可以用Set   RowCount   n(n是整数,0的话就返回所有记录)来限定返回的记录数。也可以用Select   top   n   来实现(这个方法我老是失败,得请教高手了:)。Top

2 楼weyoung(有来有去)回复于 2000-03-23 21:35:00 得分 10

1、Select   Top   5   From   Hello     返回前五条记录  
  Select   Top   10   PERCENT   From   Hello     返回10%的记录  
   
  Limiting   Result   Sets   Using   TOP   and   PERCENT  
  The   TOP   clause   limits   the   number   of   rows   returned   in   the   result   set.  
  TOP   n   [PERCENT]  
  n   specifies   how   many   rows   are   returned.   If   PERCENT   is   not   specified,   n   is   the   number   of   rows   to   return.   If   PERCENT   is   specified,   n   is   the   percentage   of   the   result   set   rows   to   return:  
  TOP   120   /*Return   the   top   120   rows   of   the   result   set.   */  
  TOP   15   PERCENT   /*   Return   the   top   15%   of   the   result   set.   */.Top

3 楼small_wolf()回复于 2000-03-24 09:39:00 得分 0

能否返回中间的结果集。比如我想返回SELECT   *   FROM   TABLE   结果集的第100到第150条记录  
  Top

4 楼Tony_Yuan()回复于 2000-03-24 21:39:00 得分 10

select   *   from   table_1   where   table_1.id   in   (select   top   150   id   from   table_1)  
  and   table_1.id   not   in   (select   top   100   id   from   table_1)Top

5 楼How()回复于 2000-03-25 13:24:00 得分 10

假设有一员工表Employee(EmployeeID,EmployeeName,...),  
  要返回第10条至第20条之间的记录,可用如下语句:  
  select   *   from   employee    
      where   (EmployeeID   not   in   (   select   top   10   EmployeeID   from   employee))  
                and   (EmployeeID   in   (select   top   20   EmployeeID   from   employee))Top

6 楼small_wolf()回复于 2000-03-27 18:45:00 得分 0

能不能有效率更高,执行速度更快的方法了,用IN命令执行速度太慢了(记录大概有十万条)。尽管我加了ID为簇索引。Top

7 楼hardnut()回复于 2000-03-27 19:13:00 得分 0

是否可以考虑对表进行水平划分,把其中常用的20%与几乎不用的80%分别放在两个表中,  
  <<Microsoft   sql   server   6.5开发指南>>上说了这个问题,但也只是‘点到为止’  
  Top

8 楼zdg(曾登高)回复于 2000-03-27 19:17:00 得分 0

Select   Top   语法只对Access和SQL   Server   7.0才能用...  
  SQL   Server   6.5不能使用...      
  为什么不用游标呢???Top

9 楼small_wolf()回复于 2000-03-28 15:29:00 得分 0

用游标就更慢了Top

10 楼tanghuan()回复于 2000-03-30 15:34:00 得分 10

如果你使用的是MSSQL,用一下方法可以  
   
  execute("create   table   #temptable   (RowNum   int   identity,数据列)  
  insert   #temptable   (数据列)    
                        select   数据列  
                                from   .....  
  select   数据列  
              from   #temptable  
              where   RowNum   between   fromrownum   and   to   torownum  
  ")Top

11 楼Axiong()回复于 2000-04-20 12:07:00 得分 10

在十多万的表中进行那样的操作,还是tanghuan的速度快些。  
  还可有一点优化    
  execute("create   table   #temptable   (RowNum   int   identity,数据列)  
  insert   #temptable   (数据列)    
                      select   top   torownum   数据列  
                              from   .....    
  select   数据列  
              from   #temptable  
              where   RowNum   between   fromrownum   and   to   torownum  
  ")Top

12 楼small_wolf()回复于 2000-05-19 09:52:00 得分 0

谢谢大家的讨论。Top

相关问题

  • 如何控制在DataGrid控件中从第几条记录开始显示,我的数据库是SQL SERVER
  • SQL SERVER中如何删除记录
  • 控制MSHFlexGrid显示记录的行数的SQL语句该如何写?
  • 请问用sql select查询 怎么控制返回记录的数量
  • 使用SQL server,能否在指定位置插入新记录?
  • 如何查询SQL Server数据库某表中没有记录?
  • vb+SQL Server开发模式中填加记录的问题
  • 如何更改、删除SQL SERVER 中的重复记录?
  • 用jsp通过jdbc.odbc桥如何向sql server中添加记录?
  • 请教 Ms SQL Server 6.5 Update 1500000条记录!!!!(详情请内进!)

关键词

  • 数据
  • top
  • 记录
  • temptable
  • 返回
  • torownum
  • 数据列
  • employeeid
  • percent
  • rownum

得分解答快速导航

  • 帖主:small_wolf
  • weyoung
  • Tony_Yuan
  • How
  • tanghuan
  • Axiong

相关链接

  • SQL Server类图书

广告也精彩

反馈

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