黑马程序员技术交流社区

标题: 随机出题的问题 [打印本页]

作者: 石国庆    时间: 2013-3-14 20:32
标题: 随机出题的问题
本帖最后由 石国庆 于 2013-4-16 20:44 编辑

想做一个在线测试模块,数据库里面有很多选择题,不过如何做到随机出题那,大家有什么好的思路?
作者: 马胜骁    时间: 2013-3-16 18:20
selct count(*) from table 能得到 数据库中一共有多少个选择题,在c#中用int count 来接收吧 用 Random rand=new Rndom(count) 随机返回一个rand ,然后利用这个rand 做ID查询出来这道选择题,不好意思,初次回答问题,叙述不太清楚,不懂得欢迎再来问我,希望能帮到你,如果数据库中ID不连续,可以试着用这个查询一下select * from (select row_number() over(order by id) row_id,* from book) book1 where book1.row_id=2
作者: 石国庆    时间: 2013-3-16 19:59
马胜骁 发表于 2013-3-16 18:20
selct count(*) from table 能得到 数据库中一共有多少个选择题,在c#中用int count 来接收吧 用 Random ra ...

from里面的语句能具体的解释一下吗?
作者: 王起    时间: 2013-3-16 21:06
先得到总题数,然后用 Random 产生1到总题数之中的一个随机数,根据随机数,   Select 题目 from 表名 where 题目编号='随机数'   
作者: 王起    时间: 2013-3-16 21:07
不知道我这思路行不行,你可以试试!
作者: 马胜骁    时间: 2013-3-18 10:26
from 里面的是ROW_namuber 函数,主要是用来表中生成一个从1开始连续的ID,这样方便你以为的输出。
作者: 石国庆    时间: 2013-3-19 11:07
马胜骁 发表于 2013-3-18 10:26
from 里面的是ROW_namuber 函数,主要是用来表中生成一个从1开始连续的ID,这样方便你以为的输出。 ...

Select  top10 * from test where testcourse=’”+Session[‘NM’].ToString()+”’ order by newid()这是我以前见到的一个方法,主要靠newid()方法,然后输出到dataset.与大家分享一下
作者: 石国庆    时间: 2013-3-19 11:07
王起 发表于 2013-3-16 21:07
不知道我这思路行不行,你可以试试!

Select  top10 * from test where testcourse=’”+Session[‘NM’].ToString()+”’ order by newid()这是我以前见到的一个方法,主要靠newid()方法,然后输出到dataset.与大家分享一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2