Einfach: Ich möchte die Anzahl der Zeilen aus der Unterabfrage zählen. Beachten Sie, dass der Status ist, ob der Host online ist oder nicht.
Schlechter Code
SELECT COUNT(ip_address) FROM `ports` (
SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE
)
Erklärt
Die erste Abfrage, wenn sie alleine ausgeführt wird, gibt Folgendes zurück:
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
Die zweite eigenständige Abfrage gibt Folgendes zurück:
SELECT COUNT(ip_address) FROM `ports`
17
Frage
Ich würde gerne wissen, wie man diese Liste von 5 IP-Adressen zählt.
Ich habe online nach möglichen Lösungen für dieses einfache Problem gesucht und war nur frustriert, also dachte ich, ich würde die Experten fragen.
SELECT COUNT(*) FROM (select * from bme_wk_umatch_ug where rdbname = 'xxx) as tocount;
einwandfrei funktioniert : Ich musste das ursprüngliche Konzept des OP verwenden, da ich die Zeilen in einer INTERSECT-Unterabfrage zählen werde.Sie müssen das verschieben
DISTINCT
zuCOUNT()
:Dies wird zurückgegeben,
5
da nur unterschiedliche Werte gezählt werden und die Unterabfrage nicht mehr benötigt wird.Diese Abfrage wird jedoch zurückgegeben,
17
da dieports
Tabelle 17 Zeilen enthält :Siehe diese SQL-Geige .
Beispieldaten mit 17 Zeilen und 5 verschiedenen IPs:
quelle