Mysql数据库主键自增长删除后id问题?

背景

一个自动抽题的小demo,其中mysql中设置id为主键自增长,但是整个程序有删除逻辑

需求

现在有一个需求是实现自动抽题

思路

原本后端的思路如下:

  1. 查询题目个数
  2. 通过random类实现生成在题目个数范围内随机的Randomid
  3. 查询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

回到顶部