我有一个像这样的 MySQL 表:
+--------+-------+
| Server | Port |
+--------+-------+
| 1 | 27001 |
| 2 | 27002 |
| 4 | 27004 |
+--------+-------+
你怎么看 - 这里是 27003 端口 - 但它在前一段时间被删除了(只是为了举例)。
有什么方法可以知道 mysql 表中未使用的最小值(例如高于 27000)? 或者没有办法,我需要制作一个单独的表,其中包含所有端口和列“已使用”或“未使用”?
情况说明:我正在创建游戏托管网站,我可以使用自动增加端口,但是一段时间后我会有很多删除/未使用的端口,我想在增加端口范围之前使用所有这些端口.
最佳答案
在 Google 上快速搜索“first missing number from sequence mysql”会得到 this page of common MySQL queries .
它向您展示了如何 find the first missing number from a sequence :
您有一个包含值 (1,2,4,18,19,20,21) 的表 tbl(id int),您希望在其 id 值序列中找到第一个缺失的数字:
SELECT t1.id+1 AS Missing
FROM tbl AS t1
LEFT JOIN tbl AS t2 ON t1.id+1 = t2.id
WHERE t2.id IS NULL
ORDER BY t1.id LIMIT 1;
+---------+
| Missing |
+---------+
| 3 |
+---------+
关于mysql - 在mysql表中查找最小未使用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6464656/