社区
数据库相关
帖子详情
如何从数据库中随机找到几条记录呢?
winsock2000
2002-10-01 06:25:25
大家好,请问如何从数据库中随机找到几条记录呢?能跟我说明白点吗?谢谢了!
对了,我用的是access的数据库!!!
...全文
47
9
打赏
收藏
如何从数据库中随机找到几条记录呢?
大家好,请问如何从数据库中随机找到几条记录呢?能跟我说明白点吗?谢谢了! 对了,我用的是access的数据库!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mingyeh
2002-10-01
打赏
举报
回复
//可以借鉴一下,你喜欢,我快乐
procedure TrdmUserStudy.UserExam(const vUserID, vSubject,
vExamType: WideString; var vQuestion, vAnswer: OleVariant);
var
UserPos : String;
UserCellPos : String;
QesTotal , i , len , j , MoveDis : Integer;
arrayQes , arrayAns : Variant;
QesBag : TStringList;
const
QesAmount : Integer = 10;
begin
if vExamType = 'etUnit' then //单元测试
begin
//查找用户进程
qryMain.Close;
qryMain.SQL.Clear;
qryMain.SQL.Add('SELECT cellNumber FROM userCourse');
qryMain.SQL.Add('WHERE username = :pUserID');
qryMain.SQL.Add('AND subject = :pSubject');
qryMain.Parameters.ParamValues['pUserID'] := vUserID;
qryMain.Parameters.ParamValues['pSubject'] := vSubject;
if qryMain.Prepared = False then
begin
qryMain.Prepared := True;
end;
qryMain.Open;
UserPos := Trim(qryMain.FieldByName('cellNumber').AsString);
//查找课件所属单元
qryMain.Close;
qryMain.SQL.Clear;
qryMain.SQL.Add('SELECT cellNumber FROM courseware');
qryMain.SQL.Add('WHERE CoursewareNumber = :pCWN');
qryMain.Parameters.ParamValues['pCWN'] := UserPos;
if qryMain.Prepared = False then
begin
qryMain.Prepared := True;
end;
qryMain.Open;
UserCellPos := Trim(qryMain.FieldByName('cellNumber').AsString);
//读入考题
qryMain.Close;
qryMain.SQL.Clear;
qryMain.SQL.Add('SELECT problemNumber,problemContent,answerContent FROM unitProblemStoreroom');
qryMain.SQL.Add('WHERE subject = :pSubject');
qryMain.SQL.Add('AND cellNumber = :pCWN');
qryMain.Parameters.ParamValues['pSubject'] := vSubject;
qryMain.Parameters.ParamValues['pCWN'] := UserCellPos;
if qryMain.Prepared = False then
begin
qryMain.Prepared := True;
end;
qryMain.Open; //取得符合条件全部题目
QesTotal := qryMain.RecordCount; //符合条件题目数量
arrayQes := VarArrayCreate([0,QesAmount -1],varString);
arrayAns := VarArrayCreate([0,QesAmount -1],varString);
QesBag := TStringList.Create;
for i := 0 to QesTotal-1 do //题目编号读入缓冲区
begin
QesBag.Add(qryMain.FieldByName('problemNumber').AsString);
qryMain.Next;
end;
qryMain.Close;
qryMain.SQL.Clear;
qryMain.SQL.Add('SELECT problemContent,answerContent FROM unitProblemStoreroom');
qryMain.SQL.Add('WHERE problemNumber = :pCWN');
Randomize;
for i := 0 to QesAmount - 1 do
begin
qryMain.Close;
len := QesBag.Count;
j := Random(len);
qryMain.Parameters.ParamValues['pCWN'] := QesBag[j]; //使用题目编号查找题目
qryMain.Open;
arrayQes[i] := qryMain.FieldByName('problemContent').AsString;
arrayAns[i] := qryMain.FieldByName('AnswerContent').AsString;
QesBag.Delete(i);
qryMain.Close;
end;
QesBag.Free;
//返回题目和答案
vQuestion := arrayQes;
vAnswer := arrayAns;
end
else if vExamType = 'etTerm' then //全面测试
begin
//取得该科目所有单元编号
qryMain.Close;
qryMain.SQL.Clear;
qryMain.SQL.Add('SELECT DISTINCT cellNumber FROM unitProblemStoreroom');
qryMain.SQL.Add('WHERE subject = :pSubject');
if qryMain.Prepared = False then
begin
qryMain.Prepared := True;
end;
qryMain.Open;
QesBag := TStringList.Create;
len := qryMain.RecordCount;
for i := 0 to len - 1 do //将单元编号装入缓冲
begin
QesBag.Add(qryMain.FieldByName('cellNumber').AsString);
qryMain.Next;
end;
Randomize;
arrayQes := VarArrayCreate([0,QesAmount -1],varString);
arrayAns := VarArrayCreate([0,QesAmount -1],varString);
for j := 0 to QesAmount - 1 do
begin
//查找随机单元题目
qryMain.Close;
qryMain.SQL.Clear;
qryMain.SQL.Add('SELECT problemContent,answerContent FROM unitProblemStoreroom');
qryMain.SQL.Add('WHERE subject = :pSubject');
qryMain.SQL.Add('AND cellNumber = :pCWN');
qryMain.Parameters.ParamValues['pSubject'] := vSubject;
qryMain.Parameters.ParamValues['pCWN'] := QesBag[Random(len)];
if qryMain.Prepared = False then
begin
qryMain.Prepared := True;
end;
qryMain.Open;
QesTotal := qryMain.RecordCount;
MoveDis := Random(QesTotal); //随机移动指针
qryMain.MoveBy(MoveDis);
arrayQes[j] := qryMain.FieldByName('problemContent').AsString;
arrayAns[j] := qryMain.FieldByName('AnswerContent').AsString;
end;
QesBag.Free;
//返回题目和答案
vQuestion := arrayQes;
vAnswer := arrayAns;
end;
end;
linzhisong
2002-10-01
打赏
举报
回复
最笨得方法,就是用數組先存recordcount內的幾個記錄號,然後next去找吧,呵呵,.
souxun1990
2002-10-01
打赏
举报
回复
记录号用Random函数产生,把Random的范围设为0到RecordCount-1之间
再根据记录号找出记录 判断记录号不重复
zsy_good
2002-10-01
打赏
举报
回复
在讲一个办法
select top 1000 * from TableName order by 这里用一个算法自己产生
一个不会重复的ID,比如年+月+日+小时+秒+毫秒,
paradox里肯定有得到年月日的函数,在用字符截取函数搞定
zsy_good
2002-10-01
打赏
举报
回复
没有ID号,怎么读
go_my_sky
2002-10-01
打赏
举报
回复
求个随机整数,然后用这个随机数读一条记录啊.
zsy_good
2002-10-01
打赏
举报
回复
sql server服务器
,可以 newid() paradox那里有这个函数,开玩笑
winsock2000
2002-10-01
打赏
举报
回复
不行呀,我刚用paradox数据库试了一下,不行~
zsy_good
2002-10-01
打赏
举报
回复
select top 1000 * from TableName order by NewId()
newid()
随机的找到1000条记录.
go
数据库
mysql与redis
什么是
数据库
?
数据库
(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个
数据库
都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。 我们也可以将数据存储在文件
中
,但是在...
laravel如何高性能地从mysql
数据库
中
随机
取出
几条
数据
laravel如何高性能地从mysql
数据库
中
随机
取出
几条
数据呢,如:从用户表
中
随机
取出100个用户 1、使用原生sql从表
中
随机
取100条数据 (1) ORDER BY RAND()和LIMIT一起使用,可以用于从多行结果
中
选取
随机
的一部分。 ...
MySQL
数据库
从表
中
随机
获取一条或者多条
记录
MySQL
数据库
从表
中
随机
获取一条或者多条
记录
php mysql
随机
读取_PHP如何
随机
读取
数据库
一条
记录
?
PHP
随机
读取
数据库
几条
记录
的方法:首先找出数据表
中
所有
记录
的总数;然后在总数范围内使用“mt_rand()”函数选择一个
随机
数;最后从
数据库
中
请求选
中
的
随机
数对应的那一行
记录
即可。PHP如何
随机
读取
数据库
一条
记录
...
mysql
随机
查询5条
数据库
_mysql
随机
查询符合条件的
几条
记录
比如,查询出所有
记录
,然后
随机
从列表
中
取n条
记录
。使用程序便可实现。可是程序实现必须查询出所有符合条件的
记录
(至少是所有符合条件的
记录
id),然后再
随机
取出n个id,查询
数据库
。但是效率毕竟没有
数据库
中
直接...
数据库相关
2,497
社区成员
88,445
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章