求一解决方法
单选题表:
ID
题目
选项A
选项B
选项C
选项D
我现在想从这表中随机选出三道题ID(要注意这样的问题.ID不一定会连续)要求:可以用sql语句
可以结合.net

解决方案 »

  1.   

    你的意思是不是   你的题目中的 ID 不一定是连续的 也就是说 不能根据编号来查询
    那么你就   把你所有的 题目都查出来 
    然后构造一个 DataTable 然后创建一个编号列(T_ID)然后设置成自动增长的这样你就可以根据这个datatable来查询了,然后new 一个Randmon 这样的话  你就能够取出 随即的三道了 
      

  2.   

    select top 3 ID from 单选题表 order by NewId()
      

  3.   

    select top 3 newid() as [id], 题目 ,选项A ,选项B ,选项C ,选项D from 单选题表
    楼主执行几次试下,每次随即取
      

  4.   

    我们经常想在一个数据表中随机地选取出数据来,比如随机生成考试试卷等。
    利用 SQL Server 的 NewID() 方法就可以很轻松地达到这个目的。NewID() 方法返回一个 GUID,如:EE95A489-B721-4E8A-8171-3CA8CB6AD9E4
    在 select 表的时候,再增加一列为 NewID() 就可以了。
    SQL 语句:select *, NewID() from table
    这样每条记录后就会有一个随机的 GUID 值,我们再按这个 GUID 排一下序就可以达到乱序的效果。
    SQL 语句:select *, NewID() as random from table order by random我们要想随机取出 10 条数据,只要加上 TOP 10 就行了:
    SQL 语句:select top 10 *, NewID() as random from table order by random筛选唯一记录
    SELECT * FROM tablename ORDER BY NEWID()这个方法只适用于 SQL Server。 
      

  5.   

    百度里找到的,不知道能不能用,SQL语句生成随机数
    ------
    存储过程是 
    --产生随机卡号的存储过程 
    if exists (select * from sysobjects where name='proc_randCardID') 
    drop procedure proc_randCardID 
    go 
    create procedure proc_randCardID 
    @randCardID varchar(20) output 
    as 
    declare @r numeric(15,8),@tempstr varchar(10) 
    select @r=rand((datepart(mm,getdate())*100000)+(datepart(ss,getdate())*1000)+datepart(ms,getdate())) 
    set @tempstr=cast(@r as varchar) 
    set @randCardID='1010 3576 '+substring(@tempstr,3,4)+' '+substring(@tempstr,5,4) 
    go
    ------------
    或者另外一种思路吧
    把所有的ID取出现,再从中随机生成3个号,再通过这三个号去读取题目,C#里可以生成随机数
      

  6.   

    看这个帖子吧,http://topic.csdn.net/u/20070402/19/26067b51-cbdc-42eb-a821-15e7bd828181.html?1583545951