Как выбрать доступный 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;