【问题标题】:how to find out missing numbers in sql table如何找出sql表中缺少的数字
【发布时间】:2018-07-30 09:48:45
【问题描述】:

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

例如 一个人使用 7003 和 7012 端口号,所以我怎么知道 7004 到 7011 可供我使用

请帮帮我

【问题讨论】:

标签: php mysql sql database sorting


【解决方案1】:

在表中创建新列,如 port_status 之后,当用户使用端口时,您会更新 port_status 列中的值 1。

然后你像这样获取记录

Select * from table_name where port_status=0

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      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
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-24
          • 1970-01-01
          相关资源
          最近更新 更多