В моем случае Есть порт между двумя диапазонами, которые начинаются от 7001 до 7050. Если кто-то взял 40 номеров портов, так как я могу узнать доступный номер порта между этими диапазонами чисел.
Например, человек принимает номер порта 7003 и номер 7012, поэтому, как я могу понять, что 7004 до 7011 доступны для меня
помогите мне
Добавьте столбец 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;
Создайте новый столбец в таблице, например port_status. После этого Когда пользователь берет порт, вы обновляете значение 1 в столбце port_status.
Затем вы получаете запись типа
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
)