Просто: я бы хотел посчитать количество строк в подзапросе. Обратите внимание, что статус зависит от того, находится хост в сети или нет.
Плохой код
SELECT COUNT(ip_address) FROM `ports` (
SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE
)
Разъяснения
Первый запрос, когда выполняется сам по себе, возвращает это:
SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE
ip_address
192.168.1.1
192.168.1.2
192.168.1.248
192.168.1.251
192.168.1.254
Второй запрос, запущенный сам по себе, возвращает это:
SELECT COUNT(ip_address) FROM `ports`
17
Вопрос
Я хотел бы знать, как посчитать этот список из 5 IP-адресов.
Я искал в Интернете возможные решения этой простой проблемы и просто расстраивался, поэтому подумал, что спросить экспертов.
SELECT COUNT(*) FROM (select * from bme_wk_umatch_ug where rdbname = 'xxx) as tocount;
мне пришлось использовать оригинальную концепцию OP, потому что я собираюсь считать строки в подзапросе INTERSECT.Вы должны перейти
DISTINCT
кCOUNT()
:Это возвращает,
5
потому что он считает только разные значения и подзапрос больше не нужен.Однако этот запрос возвращается,
17
потому что вports
таблице 17 строк :Посмотрите эту SQL Fiddle .
Пример данных с 17 строками и 5 разными IP-адресами:
источник