背景
一个自动抽题的小demo,其中mysql中设置id为主键自增长,但是整个程序有删除逻辑
需求
现在有一个需求是实现自动抽题
思路
原本后端的思路如下:
- 查询题目个数
- 通过random类实现生成在题目个数范围内随机的Randomid
- 查询id从而得到相应题目
但是由于整个demo中有删除的功能,在删除后会出现数据库的id与题目个数不一致
请问有什么解决方案吗,或者其他的方案
一个自动抽题的小demo,其中mysql中设置id为主键自增长,但是整个程序有删除逻辑
现在有一个需求是实现自动抽题
原本后端的思路如下:
请问有什么解决方案吗,或者其他的方案
用limit offset
randomid是21则:
SELECT
*
FROM
questions
ORDER BY
somefield
LIMIT 1 OFFSET 20;
通过一个list就可以解决
List<Integer> ids = 查询库里所有题目的主键;
获取长度
int len = ids.size();
然后在指定长度中随机数,通过ids.get(随机数)获取抽中题目的id就可以了
8 回答6.5k 阅读
3 回答2.8k 阅读✓ 已解决
2 回答3.4k 阅读
5 回答1.5k 阅读
3 回答1.9k 阅读✓ 已解决
4 回答592 阅读✓ 已解决
2 回答2.2k 阅读
你的问题是在你删了题目之后,题目的数量和ID不匹配了,你直接查所有题目,然后在随机选择题目就行了