MySQL count: ausführliche Erklärung und Funktionsbeispielcode

MySQL count: ausführliche Erklärung und Funktionsbeispielcode

Detaillierte Erklärung der MySQL-Anzahl

Die Funktion count wird verwendet, um die Datensätze in einer Tabelle oder einem Array zu zählen. Hier stelle ich die Verwendung der Funktion count in MySQL vor.

count(*) Gibt die Anzahl der abgerufenen Zeilen zurück, unabhängig davon, ob sie NULL-Werte enthalten oder nicht.

Wenn SELECT aus einer Tabelle abruft, ohne andere Spalten abzurufen, und keine WHERE-Klausel hat, wird COUNT(*) optimiert, um die schnellste Geschwindigkeit zurückzugeben.

Zum Beispiel:

mysql> ANZAHL AUSWÄHLEN(*) VON Student;

COUNT(DISTINCT field) Diese Optimierung ist nur auf MyISAM-Tabellen anwendbar, da diese Tabellentypen die genaue Anzahl der von einer Funktion zurückgegebenen Datensätze speichern und sehr einfach zugänglich sind.

Bei transaktionalen Speicher-Engines (InnoDB, BDB) ist das Speichern einer genauen Zeilenanzahl problematischer, da mehrere Transaktionen auftreten können, von denen jede die Zeilenanzahl beeinflussen kann.

Gibt die Anzahl der unterschiedlichen Werte ungleich NULL zurück.

Wenn kein passendes Element gefunden wird, gibt COUNT(DISTINCT) 0 zurück.

Beispiel

Erstellen Sie zum Testen eine Datentabelle, um Zähldatenstatistiken durchzuführen:

CREATE TABLE `Benutzer` (
 `id` int(5) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(10) DEFAULT NULL,
 `Passwort` varchar(10) DEFAULT NULL,
 PRIMÄRSCHLÜSSEL (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

 
Die Testdaten sind:

1 Name1 123456
2 Name2 123456
3 Name3 123456
4 name4 NULL

Bitte beachten Sie die Ergebnisse der folgenden Abfrage

wähle count(*) aus `user`
wähle count(name) aus ‚Benutzer‘
wähle count(password) aus `user`

Ausgabe: 4,4,3

Ursachenanalyse:

1. count(*) zählt die Anzahl der Zeilen, das Ergebnis ist also 4.

2. count(column_name) zählt die Zeilen in der Spalte, die nicht leer sind, also count(name)=4 und count(password)=3.

Beachten Sie bei der Verwendung der Zählfunktion die beiden oben genannten Punkte.

Verwenden Sie GROUP BY, um alle Datensätze für jeden Eigentümer zu gruppieren. Ohne diese Funktion erhalten Sie die Fehlermeldung:

mysql> SELECT Besitzer, COUNT(*) FROM Haustier;
FEHLER 1140 (42000): Mischen von GROUP-Spalten (MIN(),MAX(),COUNT(),...)
ohne GROUP-Spalten ist unzulässig, wenn keine GROUP BY-Klausel vorhanden ist.

COUNT() und GROUP BY sortieren Ihre Daten auf verschiedene Arten. Die folgenden Beispiele zeigen unterschiedliche Möglichkeiten zur Durchführung einer Tierzählung.

Anzahl der einzelnen Tiere:

mysql> SELECT Spezies, COUNT(*) FROM Haustier GROUP BY Spezies;
+---------+----------+
| Arten | ANZAHL(*) |
+---------+----------+
| Vogel | 2 |
| Katze | 2 |
| Hund | 3 |
| Hamster | 1 |
| Schlange | 1 |
+---------+----------+

Anzahl Tiere je Geschlecht:

mysql> SELECT Geschlecht, COUNT(*) FROM Haustier GROUP BY Geschlecht;
+------+----------+
| Geschlecht | ANZAHL(*) |
+------+----------+
| NULL | 1 |
| f | 4 |
| m | 4 |
+------+----------+

(In dieser Ausgabe bedeutet NULL „unbekanntes Geschlecht“.)

Anzahl der Tiere nach Art und Geschlecht:

mysql> SELECT Art, Geschlecht, COUNT(*) FROM Haustier GROUP BY Art, Geschlecht;
+---------+------+----------+
| Art | Geschlecht | ANZAHL(*) |
+---------+------+----------+
| Vogel | NULL | 1 |
| Vogel | f | 1 |
| Katze | f | 1 |
| Katze | m | 1 |
| Hund | f | 1 |
| Hund | m | 2 |
| Hamster | f | 1 |
| Schlange | m | 1 |
+---------+------+----------+

Mit COUNT() müssen Sie nicht die gesamte Tabelle durchsuchen. Wenn die vorherige Abfrage beispielsweise nur für Hunde und Katzen ausgeführt wird, lautet sie:

mysql> SELECT Spezies, Geschlecht, COUNT(*) FROM Haustier
  -> WO Spezies = 'Hund' ODER Spezies = 'Katze'
  -> GRUPPELN NACH Art, Geschlecht;
+---------+------+----------+
| Art | Geschlecht | ANZAHL(*) |
+---------+------+----------+
| Katze | f | 1 |
| Katze | m | 1 |
| Hund | f | 1 |
| Hund | m | 2 |
+---------+------+----------+

Oder, wenn Sie lediglich die Anzahl der Tiere nach Geschlecht benötigen, sofern das Geschlecht bekannt ist:

mysql> SELECT Spezies, Geschlecht, COUNT(*) FROM Haustier
  -> WO Sex NICHT NULL IST
  -> GRUPPELN NACH Art, Geschlecht;
+---------+------+----------+
| Art | Geschlecht | ANZAHL(*) |
+---------+------+----------+
| Vogel | f | 1 |
| Katze | f | 1 |
| Katze | m | 1 |
| Hund | f | 1 |
| Hund | m | 2 |
| Hamster | f | 1 |
| Schlange | m | 1 |
+---------+------+----------+

Übrigens hat das Schlüsselwort DISTINCT von MySQL viele Verwendungsmöglichkeiten, die Sie vielleicht nicht erwarten.

1. Kann beim Zählen eindeutiger Datensätze verwendet werden

Beispiel: SELECT COUNT(DISTINCT id) FROM tablename;

Es dient zur Berechnung der Anzahl der Datensätze mit unterschiedlichen IDs in der Tabelle talbebname

2. Wenn Sie den spezifischen Wert verschiedener IDs zurückgeben müssen, können Sie verwenden

Beispiel: SELECT DISTINCT id FROM tablename;

Gibt die spezifischen Werte verschiedener IDs in der Tabelle talbebname zurück

3. Die obige Situation 2 ist mehrdeutig, wenn mehr als 2 Ergebnisspalten aus der MySQL-Tabelle zurückgegeben werden müssen

Beispiel: SELECT DISTINCT id, Typ FROM tablename;

Tatsächlich ist das zurückgegebene Ergebnis, dass ID und Typ gleichzeitig unterschiedlich sind, d. h. DISTINCT wirkt gleichzeitig auf zwei Felder und schließt nur diejenigen mit derselben ID und demselben Typ aus, was von unserem erwarteten Ergebnis abweicht.

4. Zu diesem Zeitpunkt können Sie die Funktion group_concat zum Ausschließen verwenden. Diese MySQL-Funktion wird jedoch nur in MySQL 4.1 und höher unterstützt.

5. Tatsächlich gibt es eine andere Lösung, nämlich

SELECT id, type, count(DISTINCT id) FROM tablename

Obwohl das zurückgegebene Ergebnis eine zusätzliche Spalte mit nutzlosen Zähldaten enthält (vielleicht benötigen Sie diese nutzlosen Daten, die ich erwähnt habe)

Das zurückgegebene Ergebnis sind alle Ergebnisse mit unterschiedlichen IDs. Die oben genannten 4 Typen können einander ergänzend verwendet werden. Es hängt davon ab, welche Art von Daten Sie benötigen.

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site!

Das könnte Sie auch interessieren:
  • Nutzungs- und Leistungsoptimierungstechniken für die Aggregatfunktion „count“ in MySQL
  • Detaillierte Erklärung zur Verwendung der COUNT-Funktion in MySQL
  • Eine kurze Diskussion über die MySQL-Zeilenanzahl
  • Zusammenfassung der Methoden zur Verbesserung der MySQL-Anzahl
  • Detaillierte Erklärung der Zählung ohne Filterbedingungen in MySQL
  • Zusammenfassung der Unterschiede zwischen count(*), count(1) und count(col) in MySQL
  • Detaillierte Erklärung von count(), group by, order by in MySQL
  • Vergleich der Verwendung von distinct und count(*) in MySQL
  • Eine praktische Möglichkeit, die Gesamtzahl der Zeilen in MySQL-Abfrageergebnissen zu zählen, ohne (*) zu zählen
  • Erklärung und Verwendung von found_row() und row_count() in MySQL
  • Detaillierte Erklärung zur korrekten Verwendung der Zählfunktion in MySQL

<<:  So richten Sie den Remotezugriff auf einen Server ein, indem Sie in Windows eine IP-Adresse angeben

>>:  So verwenden Sie worker_threads zum Erstellen neuer Threads in nodejs

Artikel empfehlen

Detaillierte Erläuterung der SSHD-Dienste und Dienstverwaltungsbefehle unter Linux

sshd SSH ist die Abkürzung für Secure Shell, ein ...

Vue-Komponente kapselt Beispielcode zum Hochladen von Bildern und Videos

Laden Sie zuerst die Abhängigkeiten herunter: cnp...

Kurztipps für die Linux-Befehlszeile: So finden Sie eine Datei

Wir alle haben Dateien auf unseren Computern gesp...

Detaillierte Erläuterung der MySQL-Partitionsfunktion und Beispielanalyse

Zunächst: Was ist Datenbankpartitionierung? Ich h...

Mehrere Möglichkeiten zum Herunterfahren des Hyper-V-Dienstes unter Windows 10

Wenn Sie VMware Workstation zum Öffnen einer virt...

Unterschiede zwischen MySQL MyISAM und InnoDB

Der Unterschied: 1. InnoDB unterstützt Transaktio...

Detaillierte Erläuterung der Docker Volume-Berechtigungsverwaltung

Das Datenvolumen ist ein wichtiges Konzept von Do...

Vue macht Div-Höhe verschiebbar

In diesem Artikel wird der spezifische Code von V...

Beispiel für die Methode „Mysql implementiert Nullwerte zuerst/letzten“

Vorwort Wir wissen bereits, dass MySQL den SQL-Be...

Beispiele für Vorschaufunktionen für verschiedene Dateitypen in vue3

Inhaltsverzeichnis Vorwort 1. Vorschau der Office...