我有一个像这样的 MySQL 表:
+--------+-------+
| Server | Port |
+--------+-------+
| 1 | 27001 |
| 2 | 27002 |
| 4 | 27004 |
+--------+-------+
您可以看到,这里是 27003 端口,但它不久前已被删除(仅作为示例)。
有什么方法可以知道未使用的最小值(例如高于27000)在mysql表中?
或者没有办法,我需要制作一个单独的表,其中包含所有端口和带有“已使用”或“未使用”的列?
情况说明:我正在创建游戏托管网站,我可以使用端口自动增量,但是一段时间后我会有很多已删除/未使用的端口,并且我想在增加端口范围之前使用所有这些端口。
在 Google 上快速搜索“mysql序列中第一个缺失的数字 http://www.google.com.au/search?q=first+missing+number+from+sequence+mysql" gives 此页常见 MySQL 查询 http://www.artfulsoftware.com/infotree/queries.php.
它向您展示了如何找到序列中第一个缺失的数字 http://www.artfulsoftware.com/infotree/queries.php#71:
您有一个表 tbl(id int) ,其值为 (1,2,4,18,19,20,21),并且您希望找到其 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 |
+---------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)