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

一个简单的SQL问题!

楼主Naughty_boy(冷血)2003-06-02 13:55:50 在 Delphi / 数据库相关 提问

要求:从Question表里面随机抽取n个记录,然后插入到Ccd表里面,这个Sql语句怎么写? 问题点数:80、回复次数:22Top

1 楼zyyjc()回复于 2003-06-02 14:10:05 得分 3

我还没想过这个问题呢,关注中Top

2 楼lufancy(奇闻共欣赏,异议相与析)回复于 2003-06-02 14:16:00 得分 50

这个问题不简单哦  
  我能想到的方法比较麻烦  
  需要使用存储过程和游标Top

3 楼bbs791109(小别)回复于 2003-06-02 14:22:15 得分 9

假設count=Question表的記錄條數  
  遍歷Question表﹐取出random(2)(產生0或1)值﹐為0   則不取﹐反之則取出。  
  直到取出N個記錄或Question表遍歷完為止。Top

4 楼jpyc(九品-沉默)回复于 2003-06-02 14:27:32 得分 9

先提取随机数,然后利用随机数加入SQL语句中实现你的效果不行吗?Top

5 楼Naughty_boy(冷血)回复于 2003-06-02 14:32:51 得分 0

急!我记得我得数据库的书里面好象有这样一句:  
  select   3   from   student,  
  可是我测试了N遍,老提示出错!Top

6 楼XZHHAI(星之瀚海)回复于 2003-06-02 14:36:37 得分 0

你上面这句是什么意思,取出数据集条数个3?  
  好象SQL中不支持随机函数,用一条SQL恐怕没法实现的!Top

7 楼fhuibo(永远深爱一个叫“莎”的好女孩儿)回复于 2003-06-02 14:38:34 得分 0

楼主有什么意义吗?Top

8 楼Naughty_boy(冷血)回复于 2003-06-02 14:42:44 得分 0

我们在作一个试题库,要求从中能抽取试题,组成试卷,从数据库中随机选取!  
  我记得我的数据库系统概论上面好想有着样一个例子的,可是,在Delphi下面就是调试不成功!  
  7456!!!  
  :(!!Top

9 楼lovelymelon(小人物)回复于 2003-06-02 14:46:57 得分 9

建议将表question加一个字段rec,该字段的值为当前记录的序号,这样就可以用sql语句查询了  
  for   n:=   0   to   9   do  
  begin  
  randomize;  
  i:=random(10);  
  form1.Query1.sql.add('select   *   from   question   where   rec=:s1)'  
  form1.Query1.ParamByName('s1').Value:=i;  
  form1.Query1.open;  
  然后将查出的结果添加到另一个表中  
  end;Top

10 楼Naughty_boy(冷血)回复于 2003-06-02 15:07:58 得分 0

我得数Question表面有一个字段叫做ID,每个试题的ID都是不一样的!  
  我的一点想法:  
  先建立一个数组,元素是数据库里面的ID字段的集合,然后从这个数组里面选择任意的记录,然后插入到Ccd表里面去不知道,这个想法能不能实现?Top

11 楼ZcPascal(Pascal2x)回复于 2003-06-02 15:18:55 得分 0

random()   取出,然后select   *   from   question   where   recno=random()Top

12 楼Naughty_boy(冷血)回复于 2003-06-02 15:30:05 得分 0

楼上的,SQL好像不能用random,inttostr这一类函数吧!Top

13 楼wycg_cnh20(发奋图强中)回复于 2003-06-02 15:38:59 得分 0

好象不行Top

14 楼firetoucher(风焱)回复于 2003-06-02 15:43:16 得分 0

insert   into   Ccd  
  select   top   n   *  
  from   QuestionTop

15 楼lufancy(奇闻共欣赏,异议相与析)回复于 2003-06-02 16:30:12 得分 0

我都说了不是简单问题了  
  生成随机数后还有一个随机数重复的问题  
  数据库应当避免插入重复的数据  
  对于这种比较复杂的查询  
  使用存储过程吧  
  上面谈了这么多还没有涉及到插入  
   
  楼主的select   3   from   student  
  是掉了一个top(如楼上)  
  与随机数无关   只是找前3条记录  
   
  Top

16 楼lufancy(奇闻共欣赏,异议相与析)回复于 2003-06-02 16:39:22 得分 0

lovelymelon(小人物)   的增加一个索引字段的建议到是不错  
  可以一试Top

17 楼Naughty_boy(冷血)回复于 2003-06-02 17:38:09 得分 0

你们说得索引字段是不是就是数据库中一个能标识一个记录的字段,每一个记录的这个字段都是不相同的?如果是我的数据库里面已经有了,那就是ID字段呀?Top

18 楼payzq(人生)回复于 2003-06-02 17:56:50 得分 0

select   top   随机数(变量)   from   Question  
  Top

19 楼taotaoo(蜻蜓)回复于 2003-06-02 19:30:47 得分 0

用随机函数生成你的id号,然后  
  'install   into   xx1   from   xx2   where   id=xxx'   就可以了Top

20 楼lufancy(奇闻共欣赏,异议相与析)回复于 2003-06-03 08:40:31 得分 0

payzq(人生)   的方法每次都只能取前面几条   根本不能随机  
   
  taotaoo(蜻蜓)   的方法只能取一个记录  
  Top

21 楼henry2003(阿波)回复于 2003-06-03 08:48:02 得分 0

var   i   ,j:integer;  
  i:=random(100);  
  for   j:=1   to   I   do  
  begin  
  AdoQuery1.sql.add('Insert   into   Ccd(x1,x2,x3)   select   a1,a2,a3   from   Question   where   Id='+IntToStr(J));  
  AdoQuery1.ExecSql;  
  end;Top

22 楼lufancy(奇闻共欣赏,异议相与析)回复于 2003-06-03 09:40:30 得分 0

henry2003(阿波)   的功能和payzq(人生)   完全一样  
  而且实现相对复杂Top

相关问题

  • 简单的SQL?
  • 简单的SQL?
  • 求简单sql
  • sql简单问题
  • sql 简单问题
  • sql简单问题
  • SQL简单问题
  • 求一简单SQL
  • 简单sql 问题
  • 简单SQL请教!!!!!!!!!!!!!!!!!!

关键词

  • 字段
  • 语句
  • 数据库
  • 试题
  • sql
  • 表
  • 取出
  • question
  • random
  • 实现

得分解答快速导航

  • 帖主:Naughty_boy
  • zyyjc
  • lufancy
  • bbs791109
  • jpyc
  • lovelymelon

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

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