最近做了一个在线的考试系统,遇到从数据库表中随机抽取记录的问题,不知道该如何往下写,还望大虾们看到能指点一二。
数据库是用的Mysql
现在打算前台考卷能够随机从考试题目表(ExamProblem)中随机抽取N条记录,供前台使用。
要求最好能在数据库端完成随机操作,把记录全部导出到服务器端的思路暂不考虑。
数据库是用的Mysql
现在打算前台考卷能够随机从考试题目表(ExamProblem)中随机抽取N条记录,供前台使用。
要求最好能在数据库端完成随机操作,把记录全部导出到服务器端的思路暂不考虑。
SELECT * FROM tbl_name ORDER BY RAND() limit 10
不过用你这个SQL语句,筛选数据
好像跟主键ID就没多大关系了
因为你这个是使用的每条记录隐藏的Rand来排序的
不知道我理解的对不对
不会有重复
但这里有个问题是避免不了得
这个表里的数据有可能会进行删除操作,也就是说有可能主键ID是间断的
这样你程序生成的十个随机数是不是得先做一下数据表中是否有跟这十个随机数相等的ID值的判断
这样每个随机数都需要对数据表遍历一遍
这样做我想肯定是得不偿失的
然后通过程序得到 随机数 1654 则
select * from yourTable order by pkCol limit 1654,1这样就行了。
ACMAIN_CHM就是厉害
我只顾服务器端台随机数跟数据库ID想匹配了
却忘记了还可以将随机数做为起始记录来做
看来还是思维不够开阔啊