答题小程序从试题库中随机生成试题的方式,我想了一下,看怎么实现。
方法一、查询第一条,随机下一题的题目的ID
先取第一道题,然后随机一个步长,根据这个步长的随机值,去搜数据库的时候,用这个增长的步长做间隔。比如 MySQL 或者 PostgreSQL 中,就用这个递增的步长拼接到 offset 查询语句上。
比如第一次查询第一道题,查询条件相同,但是 offset = 0。那就出来数据库中第一条数据。
第二次查询时,随机一个 (0-10) 以内的整数,比如随机到 2, 那本次查询就采用 offset 2 去搜数据库,这样就查到了数据库中的第三条数据返回给前端。
第三次再查询,这次又随机一个 (0-10)以内的整数,比如随机到1,那本次查询就在前面基础上再 offset 1 ,就是 offset 3 ,查到第四条记录作为下一条题目返回给前端。
以此类推,直到完成总题目数量。
现在我建立一个简单的答题表 question 来验证上面这个 【题库中随机生成试题的解决方案】 办法是否可行。
CREATE TABLE `question` (
`id` varchar(20) NOT NULL,
`title` varchar(225) NOT NULL DEFAULT ” COMMENT ‘答题标题’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=’答题问题库’
查询第一条。
select id from question limit 1,1;
查询第二条
select id from question limit 1,3;
查询第三条
select id from question limit 1,4;
经过我实际操作,可以确认能查到,这个方法是可行的。