CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

随机提取记录问题

楼主truelang(truelang)2005-08-01 17:40:57 在 MS-SQL Server / 疑难问题 提问

表:table(Fid,Fclass,Fnumber,Fname)  
  假设Fclass的取值有1..9共九个值,现在要从table中随机取出10个记录,  
  要求:在这10个记录中,每一个Fclass都得不同,这样就可以取到9条记录,  
  最后还有一条记录从剩余的记录中随机取出???  
  问题点数:50、回复次数:20Top

1 楼truelang(truelang)回复于 2005-08-01 17:42:47 得分 0

在线等待!谢谢!!!!!!  
   
  随机读取N条记录的语句:SELECT   TOP   N   * FROM   table   ORDER   BY   NEWID()Top

2 楼zlp321002(Life Is Good,Let's Shine)回复于 2005-08-01 19:21:11 得分 4

--最后还有一条记录从剩余的记录中随机取出???  
  --那不又有重复记录了??这个怎么处理??Top

3 楼junly1981(浪子心声)回复于 2005-08-01 19:40:15 得分 4

同意   zlp321002(职业-->烧人民币)的,说清楚一点Top

4 楼aw511(点点星灯)回复于 2005-08-01 19:41:57 得分 12

--楼主,你说的是这个意思吗??  
   
  CREATE   TABLE   [chengji]   (  
  [ID]   [int]   IDENTITY   (1,   1)   NOT   NULL   ,  
  [chengji]   [decimal](18,   2)   NULL   ,  
  CONSTRAINT   [PK_chengji]   PRIMARY   KEY     CLUSTERED    
  (  
  [ID]  
  )     ON   [PRIMARY]    
  )   ON   [PRIMARY]  
  GO  
   
  select   id,chengji   from   dbo.chengji  
   
  insert   chengji(chengji)  
  values(100)  
  insert   chengji(chengji)  
  values(93.3)  
  insert   chengji(chengji)  
  values(78.5)  
  insert   chengji(chengji)  
  values(56.2)  
  insert   chengji(chengji)  
  values(88)  
   
  --测试  
  select   top   1   id,chengji   into   #t   from   dbo.chengji   ORDER   BY   NEWID()  
   
   
  select   id,chengji   from   dbo.chengji  
  union   all  
  select   id,chengji   from   #t  
  drop   table   #tTop

5 楼truelang(truelang)回复于 2005-08-02 08:35:13 得分 0

10个记录从九种类型Fclass中取,当然有一个要重复啦,,,,,,就是有且仅有一个Fclass类型有两条记录,其它Fclass只能对应一条记录!!!!!!  
  谢谢   aw511(点点星灯)   ,但我希望用我所用的表来解决,如果用你的解决方法,我还得再去研究你的想法,不是吗???Top

6 楼aw511(点点星灯)回复于 2005-08-02 08:40:43 得分 4

楼主,我是从5个不同纪录中提取了6条记录啊,有两条是相同的啊!  
   
  我用了临时表,你说的方法是什么呢??Top

7 楼truelang(truelang)回复于 2005-08-02 09:00:50 得分 0

大概就是这个意思,我先去试下,不过最好不要用Union,因为如果类型太多的话,这个方法太死了!!!!!Top

8 楼rfq(任凤泉)回复于 2005-08-02 10:29:04 得分 2

newid()  
  Top

9 楼truelang(truelang)回复于 2005-08-02 13:18:05 得分 0

继续请教高手!!!  
  另外请注意:table表中可不止九条记录的啊,每个Fclass都会对应有很多条记录的,  
  是要多这么多条记录中取出10条记录,并且要符合以上条件!!!Top

10 楼truelang(truelang)回复于 2005-08-03 11:03:32 得分 0

已经一天了,高手哪去啦???Top

11 楼topdogXP(心残)回复于 2005-08-04 11:17:58 得分 7

看看是不是这个意思:  
  select   *   from   Table   T   where   Fclass   in(select   Top   1   Fclass   from   Table   where   Fclass=T.Fclass   Group   by   Fclass)   Or   Fid=@@IDENTITYTop

12 楼truelang(truelang)回复于 2005-08-04 12:09:54 得分 0

是这样的,不过我是要能取出10条记录!!!  
  先取出9条记录也行,每种类型取一个记录出来!Top

13 楼bugchen888(臭虫)回复于 2005-08-04 13:20:43 得分 12

table(Fid,Fclass,Fnumber,Fname)  
   
  select   distinct   Fid,(select   top   1   Fclass,Fnumber,Fname   where   Fid=a.Fid   order   by   newid())  
  from   table   a  
  union  
  select   top   1   *   from   table   order   by   newid()  
   
  这样无法保证最后一条记录和其他记录不相同.如果实在是对这个要求很Care,那我感觉只能用临时表了.Top

14 楼truelang(truelang)回复于 2005-08-04 15:42:45 得分 0

上面的语句运行出错!  
  其实只要能拿出9条就可以了,因为最后一条是比较容易的。  
  可以保证最后一条记录不重复,只要加上一个条件:sleect   *   from   table1   where   Fid   not   in......Top

15 楼truelang(truelang)回复于 2005-08-05 14:34:04 得分 0

继续请教宝贵意见,谢谢!!!!!!Top

16 楼bugchen888(臭虫)回复于 2005-08-05 16:10:27 得分 5

sorry   子查询中忘了写FROM子句  
   
  select   distinct   Fid,  
  (select   top   1   Fclass,Fnumber,Fname    
  from   table    
  where   Fid=a.Fid    
  order   by   newid())  
  from   table   aTop

17 楼truelang(truelang)回复于 2005-08-05 17:40:26 得分 0

谢谢 bugchen888(臭虫)  
  但为什么我老是运行出错呢,把table改为table1之后还是运行不了,table是一个关键字Top

18 楼truelang(truelang)回复于 2005-08-08 15:33:49 得分 0

继续求助,谢谢!Top

19 楼truelang(truelang)回复于 2005-08-09 14:22:39 得分 0

现在这里怎么这么冷清啊,,  
  一个问题阁了一个星期了还没得到解决,  
  结了算啦!!!!!!Top

20 楼bugchen888(臭虫)回复于 2005-08-09 14:30:16 得分 0

select   distinct   Fid,  
  (select   top   1   Fclass,Fnumber,Fname    
  from   [table]    
  where   Fid=a.Fid    
  order   by   newid())  
  from   [table]   aTop

相关问题

  • Oracle中可不可以随机提取一条记录?
  • 如何随机提取表中的10条记录~~
  • 如何从一个表中提取一条随机的记录
  • 求一段ORACLE随机提取记录的语句 就是说每次刷新取到的记录集的顺序都不一样
  • 随机提取数据?
  • 高手!求救!!无法提取记录!!
  • 有关记录集提取的问题
  • 如何提取history中的记录?
  • 如果提取最新的记录?
  • 如何随机提取数据?

关键词

  • 解决
  • top
  • chengji
  • fclass
  • 记录
  • fid
  • fnumber
  • 取出
  • 谢谢
  • fname

得分解答快速导航

  • 帖主:truelang
  • zlp321002
  • junly1981
  • aw511
  • aw511
  • rfq
  • topdogXP
  • bugchen888
  • bugchen888

相关链接

  • SQL Server类图书

广告也精彩

反馈

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