Proste: chciałbym policzyć liczbę wierszy z zapytania podrzędnego. Pamiętaj, że status określa, czy host jest online, czy nie.
Zły kod
SELECT COUNT(ip_address) FROM `ports` (
SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE
)
Wyjaśnione
Pierwsze zapytanie po uruchomieniu zwraca:
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
Drugie uruchomione zapytanie zwraca:
SELECT COUNT(ip_address) FROM `ports`
17
Pytanie
Chciałbym wiedzieć, jak policzyć tę listę 5 adresów IP.
Szukałem w Internecie możliwych rozwiązań tego prostego problemu i po prostu byłem sfrustrowany, więc pomyślałem, że zapytam ekspertów.
SELECT COUNT(*) FROM (select * from bme_wk_umatch_ug where rdbname = 'xxx) as tocount;
musiałem użyć oryginalnej koncepcji OP, ponieważ będę liczył wiersze w podzapytaniu INTERSECT.Musisz przenieść
DISTINCT
doCOUNT()
:Zwraca,
5
ponieważ zlicza tylko odrębne wartości, a podzapytanie nie jest już potrzebne.Jednak to zapytanie zwraca,
17
ponieważ wports
tabeli jest 17 wierszy :Zobacz ten SQL Fiddle .
Przykładowe dane z 17 wierszami i 5 różnymi adresami IP:
źródło