繁体   English   中英

如何在sql表中找出缺失的数字

[英]how to find out missing numbers in sql table

在我的情况下,从7001到7050的两个范围之间都有端口。如果有人使用了40个端口号,那么我如何才能找出这些范围内的可用端口号。

例如,一个人使用7003和7012端口号,因此我如何确定7004至7011对我可用

请帮帮我

在类似于port_status的表中创建新列。之后,当用户占用端口时,则更新port_status列中的值1。

然后您获取记录

Select * from table_name where port_status=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

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

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

添加一个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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM