如何找出sql表中缺少的数字

时间:2018-02-20 05:23:15

标签: php mysql sql database sorting

在我的情况下,在两个范围之间有从7001到7050之间的端口。如果某人已经获取了40个端口号,那么我怎么能找到这些数字范围之间的可用端口号。

例如 一个人拿7003和7012端口号,这样我怎么能算出7004到7011可供我使用

请帮帮我

4 个答案:

答案 0 :(得分:1)

在表中创建新列,如port_status 之后当用户获取端口时,则更新port_status列中的值1。

然后你获取像

这样的记录
Select * from table_name where port_status=0

然后您将使用未被用户占用的所有端口

答案 1 :(得分:0)

不确定答案,但您可以查看此查询

select min_a - 1 + level
 from ( select min(a) min_a
             , max(a) max_a
          from test1
      )
connect by level <= max_a - min_a + 1
minus
 select a
 from test1

结果将是:

MIN_A-1+LEVEL
-------------
     7003
     7007
     7008
     7009

答案 2 :(得分:0)

以下是嵌套子查询的示例,您可以将其用作参考

SELECT your-cloumn
FROM ports
WHERE EXISTS 
  (
   SELECT *
   FROM ports
   WHERE your-column BETWEEN your-column AND your-column
  )

答案 3 :(得分:0)

添加一个status列,当该端口空闲时可以取0,当它被占用时可以取1。

ALTER TABLE your_port_table ADD `status` INT DEFAULT 0;

因此,您可以轻松地运行下面的查询以获得具有最小端口号的空闲端口:

SELECT port_number
FROM your_port_table
WHERE `status`=0
ORDER BY port_number DESC
LIMIT 1;