一尘不染

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

mysql

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

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

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


阅读 621

收藏
2020-05-17

共1个答案

一尘不染

您可以使用以下查询获取最小可用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

2020-05-17