Mysql数据库主键自增长删除后id问题?
背景
一个自动抽题的小demo,其中mysql中设置id为主键自增长,但是整个程序有删除逻辑
需求
现在有一个需求是实现自动抽题
思路
原本后端的思路如下:
- 查询题目个数
- 通过random类实现生成在题目个数范围内随机的Randomid
- 查询id从而得到相应题目
但是由于整个demo中有删除的功能,在删除后会出现数据库的id与题目个数不一致
请问有什么解决方案吗,或者其他的方案
回答:
你的问题是在你删了题目之后,题目的数量和ID不匹配了,你直接查所有题目,然后在随机选择题目就行了
SELECT * FROM questions;
回答:
用limit offset
randomid是21则:
SELECT *
FROM
questions
ORDER BY
somefield
LIMIT 1 OFFSET 20;
回答:
先查询出题目的数量n,再生成一个小于n的随机数,假设是m
再查询第m条记录 select * from question limit m,1
回答:
把 id=randomId
改为 id >= randomId limit 1
回答:
通过一个list就可以解决
List<Integer> ids = 查询库里所有题目的主键;
获取长度
int len = ids.size();
然后在指定长度中随机数,通过ids.get(随机数)获取抽中题目的id就可以了
以上是 Mysql数据库主键自增长删除后id问题? 的全部内容, 来源链接: utcz.com/p/945354.html