当前位置: 首页 > 面试题库 >

MySQL找到最小的+唯一的ID可用

袁晋鹏
2023-03-14
问题内容

我有一个列ID,大约有1000个项目,其中一些已被删除,例如 id=90, id=127, id=326

我如何进行查询以查找那些可用的ID,以便可以将其重新用于其他项目?

它像一个,min(ID)但我只想查找数据库中不存在的ID,因此,如果我使用删除项目,则ID = 90下次单击添加项目时,我将其插入为id = 90


问题答案:

您可以使用以下查询获取最小可用ID:

SELECT MIN(t1.ID + 1) AS nextID
FROM tablename t1
   LEFT JOIN tablename t2
       ON t1.ID + 1 = t2.ID
WHERE t2.ID IS NULL

它的作用是将表与其自身连接起来,并检查min+1ID是否null存在。如果为空,则该ID可用。假设您的表ID位于:
1
2
5
6


然后,此查询将为您提供所需的结果3



 类似资料:
  • 我试图在N大小的数组的k个元素中找到最小和次最小的元素(没有排序和最小/最大堆)。 使用传统的方法,首先从第< code>0个元素开始,在第< code>k个元素中找到最小的和第二小的元素,然后将起始点移动< code>1并重复该过程。但是它的复杂度是< code>O(Nk)。如果可能,我需要一个复杂度为< code>O(N)的解决方案。对此有什么建议吗? 在Jubobs的注释后编辑:例如,如果s

  • 所以我有一个练习,我应该证明或反驳: 1)如果e是连通图G中的一个最小权边,使得不一定所有边都是不同的,则G的每一个最小生成树都包含e 关于如何证明这两个问题,有什么建议吗?归纳法?不知道怎么接近。

  • 问题内容: 我必须在MySQL数据库中找到下一个可用的id(如果数据库中有5个数据,我必须获取下一个可用的插入位置是6)。我怎样才能做到这一点?我曾经用过,但是当我从数据库中删除一些行时,它仍然保留了没有更新的旧最大值。 问题答案: 我认为您永远无法确定 下一个 ID,因为有人可能会在您要求下一个ID之后插入新行。您至少需要一个事务,并且如果我没记错的话,您只能 在 插入它 后 获得实际使用的ID

  • 问题内容: 我正在尝试为添加到jqGrid的新行分配唯一的ID。我使用免费的jqGrid 4.11.0,它是服务器端的java rest服务,而数据库是MS SQL。 我注意到jqGrid给出的默认ID是jqg +一个数字。关于如何制作唯一未在任何数据库记录中使用的唯一ID的任何建议?我应该从服务器端执行此操作还是可以在jqGrid代码中进行? 在晚上的某个时间点,此代码可以正常工作,并继续为所有

  • 问题内容: 我想创建一个唯一的ID,但给出类似的信息。我想要的是与tinyurl提供的类似的东西:。越短越好。唯一的要求是,它不应具有明显的顺序,并且应比看似随机的数字序列更漂亮。字母优先于数字,理想情况下,字母不能混合使用。由于条目数量不会那么多(最多10000个左右),因此碰撞的风险并不是一个很大的因素。 任何建议表示赞赏。 问题答案: 制作一个小函数,该函数返回给定长度的随机字母: 然后,您

  • 本文向大家介绍MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据),包括了MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据)的使用技巧和注意事项,需要的朋友参考一下 开发背景: 最近在做一个批量数据导入到MySQL数据库的功能,从批量导入就可以知道,这样的数据在插入数据库之前是不会进行重复判断的,因此只有在全部数据导入进去以后在执行一条语句进行删除,保证数据唯一性。