Simples: gostaria de contar o número de linhas da subconsulta. Observe que o status é se o host está online ou não.
Código incorreto
SELECT COUNT(ip_address) FROM `ports` (
SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE
)
Explicado
A primeira consulta, quando executada sozinha, retorna isso:
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
A segunda consulta executada por si só retorna isso:
SELECT COUNT(ip_address) FROM `ports`
17
Questão
Gostaria de saber como contar essa lista de 5 endereços IP.
Estive pesquisando on-line possíveis soluções para esse problema simples e estou ficando frustrado, por isso pensei em perguntar aos especialistas.
SELECT COUNT(*) FROM (select * from bme_wk_umatch_ug where rdbname = 'xxx) as tocount;
eu tive que usar o conceito original dos OPs porque vou contar as linhas em uma subconsulta INTERSECT.Você deve mover o
DISTINCT
paraCOUNT()
:Isso retorna
5
porque conta apenas valores distintos e a subconsulta não é mais necessária.No entanto, essa consulta retorna
17
porque há 17 linhas naports
tabela:Veja este SQL Fiddle .
Amostra de dados com 17 linhas e 5 IPs distintos:
fonte