Как выбрать доступный IP-адрес из таблицы MySQL базы данных

У меня есть MySQL таблица называется ip_address с колонкой называется ip и он содержит следующие данные

192.168.1.52
192.168.1.7
192.168.1.21
192.168.1.107,,,

моя проблема в том, как получить доступный IP-адрес из подсети, я имею в виду, что эта подсеть должна содержать диапазон от 192.168.1.1 до 192.168.1.255, но не все IP-адреса были сохранены, поэтому мне удалось отсортировать их по:

SELECT ip FROM ip_address ORDER BY INET_ATON(ip)

Я хочу получить все IP-адреса, которые не найдены в таблице ip_address из этого диапазона.

1 ответ

Предполагая, что вы можете создать таблицу с именем numbers это включает (по крайней мере) все целые числа от 1 до 255, тогда вы можете использовать такой запрос, чтобы найти неиспользуемые IP-адреса для данной подсети:

SELECT CONCAT('192.168.1.',numbers.n) as available_ip
FROM numbers
LEFT OUTER JOIN ip_address ON ip_address.ip = concat('192.168.1.',numbers.n)
WHERE numbers.n BETWEEN 1 AND 255
  AND ip_address.ip IS NULL
ORDER BY numbers.n;
Другие вопросы по тегам