当前位置: 首页 > 知识库问答 >
问题:

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

白淇
2023-08-08

背景

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

需求

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

思路

原本后端的思路如下:

  1. 查询题目个数
  2. 通过random类实现生成在题目个数范围内随机的Randomid
  3. 查询id从而得到相应题目
    但是由于整个demo中有删除的功能,在删除后会出现数据库的id与题目个数不一致

请问有什么解决方案吗,或者其他的方案

共有2个答案

董品
2023-08-08

limit offset

randomid是21则:

SELECT    *FROM    questionsORDER BY    somefieldLIMIT 1 OFFSET 20;
杜嘉慕
2023-08-08

你的问题是在你删了题目之后,题目的数量和ID不匹配了,你直接查所有题目,然后在随机选择题目就行了

SELECT * FROM questions;
 类似资料:
  • 主要内容:指定自增字段初始值,自增字段值不连续在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。 通过给字段添加 AUTO_INCREMENT 属性来实现主键自增长。语法格式如下: 字段名 数据类型 AUTO_INCREMENT 默认情况下,AUTO_INCREMENT 的初始值是 1,每新增一条记录,字段值自动加 1。 一个表中只能

  • 问题内容: 我正在将我的mysql db表从id(自动)更改为uid。 这是我得到的错误。 据我了解,我需要将ID更改为非自动增量,因为我将其作为主键了。更改列以删除主键和自动递增的语法是什么? 问题答案: 如果您需要在单个SQL语句中从列中删除自动增量和主键,则应该这样做: 实际上,您应该能够在单个查询中完成所有操作:

  • 当数据库不再使用时应该将其删除,以确保数据库存储空间中存放的是有效数据。删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。 在 MySQL 中,当需要删除已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为: 语法说明如下: <数据库名>:指定要删除的数据库名。 IF EXISTS:用于防止当数据库不存在时发生错误。 DROP DAT

  • 问题内容: 我将quartz.net版本从1.0.3升级到2.0.2。有一个用于数据库模式的迁移脚本,该脚本是为MSSQL编写的,并且我正在尝试为其编写MYSQL版本。 但是,我无法删除主键(需要这样做)。 MSSQL的原始脚本版本: 为了简单起见,我正在尝试第一个声明 这是我尝试过的结果: ALTER TABLE BLOB_TRIGGERS DROP PRIMARY KEY; [Err] 102

  • 本文向大家介绍MySql数据库自动递增值问题,包括了MySql数据库自动递增值问题的使用技巧和注意事项,需要的朋友参考一下 在数据库应用,我们经常要用到唯一编号,以标识记录。在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成。MySQL支持多种数据表,每种数据表的自增属性都有差异,这里将介绍各种数据表里的数据列自增属性。 ISAM表 如果把一个NULL插入到一个AUTO_INC

  • 问题内容: 我有一个带有主键字段且具有AUTO_INCREMENT的MySQL表。在阅读了这里的其他文章后,我发现人们遇到了同样的问题,答案也各不相同。有些人建议不要使用此功能,其他人则说它不能被“修复”。 我有: 示例:表中的记录数:18.如果我删除记录16、17和18-我希望输入的下一条记录的courseID为16,但是由于最后输入的courseID为18,所以它将为19。 我的SQL知识不是