Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL COUNT() – Ruft die Anzahl der Zeilen ab, die von einer Abfrage zurückgegeben werden sollen

MySQL enthält ein COUNT() Funktion, mit der Sie herausfinden können, wie viele Zeilen von einer Abfrage zurückgegeben würden. Diese Funktion ist Teil des SQL-Standards und kann mit den meisten Verwaltungssystemen für relationale Datenbanken verwendet werden.

Der COUNT() Die Funktion kann bei Bedarf auch verwendet werden, um die Ergebnisse einer Abfrage zu beeinflussen, indem beispielsweise nur die Ergebnisse zurückgegeben werden, deren Zeilenanzahl größer als ein bestimmter Betrag ist.

Dieser Artikel enthält Beispiele für COUNT() Verwendung in MySQL.

Die Daten

Hier sind zunächst die Daten, die wir für die Beispiele auf dieser Seite verwenden:

SELECT *FROM Aufgaben;

Ergebnis:

+--------+-------------------+---------------- +| Aufgaben-ID | Aufgabenname | Aufgabenbeschreibung |+--------+-------------------+-----------------+ | 1 | Gärtnern | NULL || 2 | Katzen füttern | NULL || 3 | Dach streichen | NULL || 4 | Hund spazieren führen | NULL || 5 | Entspannen Sie sich | NULL || 6 | Katzen füttern | NULL |+--------+-------------------+-----------------+ 

Alle Zeilen in einer Tabelle zählen

Sie können COUNT() verwenden um die Gesamtzahl der Zeilen in einer Tabelle zurückzugeben:

SELECT COUNT(*)FROM Aufgaben;

Ergebnis:

+----------+| ZÄHLEN(*) |+----------+| 6 |+----------+ 

Dies gibt die Anzahl der Zeilen in der Tabelle zurück, da wir keine Kriterien angegeben haben, um die Ergebnisse einzugrenzen.

Grenzen Sie die Ergebnisse ein

Wenn wir ein WHERE hinzufügen -Klausel, die die Ergebnismenge eingrenzt, erhalten wir eine kleinere Zahl:

SELECT COUNT(*)FROM TasksWHERE TaskName LIKE '%cat%';

Ergebnis:

+----------+| ZÄHLEN(*) |+----------+| 2 |+----------+

Eine Spalte vs. Sternchen (*)

Die vorherigen Beispiele verwenden alle ein Sternchen, um die Anzahl auf alle Spalten anzuwenden. Wie bei jeder Abfrage ist das Sternchen optional und wird als Platzhalter verwendet, um alle Spalten zurückzugeben. Also bei Verwendung von COUNT() Funktion haben Sie auch die Möglichkeit, bestimmte Spalten (im Gegensatz zu allen Spalten) als Argument anzugeben.

Beispiel:

SELECT COUNT(TaskName)FROM Tasks;

Ergebnis:

+----------------+| COUNT(Aufgabenname) |+----------------+| 6 |+----------------+

Während dieses Beispiel das gleiche Ergebnis zurückgibt, das wir erhalten haben, als wir das Sternchen verwendet haben, muss dies nicht unbedingt immer der Fall sein. Folgendes passiert beispielsweise, wenn wir eine andere Spalte angeben:

SELECT COUNT(TaskDescription)FROM Tasks;

Ergebnis:

+------------------------+| COUNT(TaskDescription) |+------------------------+| 0 |+--------------------------------+

In diesem Fall erhalten wir Null, weil diese bestimmte Spalte in jeder Zeile Nullwerte enthält.

Beispiel – Eindeutig

Sie können den DISTINCT hinzufügen -Argument, um nur die Anzahl der Zeilen mit unterschiedlichen Nicht-NULL zurückzugeben Werte.

Sie haben vielleicht bemerkt, dass der TaskName Spalte hat einen doppelten Wert („Katzen füttern“ erscheint zweimal). Dies kann zu Problemen führen, wenn Sie nicht möchten, dass Duplikate gezählt werden.

So sieht es aus, wenn wir den DISTINCT anwenden -Argument für TaskName Spalte:

SELECT COUNT(DISTINCT TaskName)FROM Tasks;

Ergebnis:

+---------------------+| COUNT(DISTINCT TaskName) |+---------------------+| 5 |+---------------------+

Obwohl die Tabelle also sechs Zeilen enthält, sind zwei davon Duplikate. Daher werden diese beiden als eins gezählt, wir erhalten ein Ergebnis von fünf.

Beispiel – Die HAVING-Klausel

Sie können auch COUNT() verwenden mit dem HAVING -Klausel, um eine Ergebnismenge basierend auf der Anzahl der zurückgegebenen Zeilen einzuschränken.

Hier ist ein Beispiel mit einem anderen Datensatz als in den vorherigen Beispielen:

USE Music;SELECT ar.ArtistName, COUNT(al.AlbumName) 'Album Count'FROM Artists arINNER JOIN Alben al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 1; 

Ergebnis:

+------------------------+-------------+| Künstlername | Albumanzahl |+------------------------+---------------------+| Eiserne Jungfrau | 5 || Devin Townsend | 3 || Michael lernt zu rocken | 3 || Tom Jones | 3 || Allan Holdsworth | 2 |+------------------------+------------+

Diese Abfrage gibt nur die Künstler zurück, die mehr als 1 Album veröffentlicht haben. Folgendes passiert, wenn wir den Wert in HAVING erhöhen Klausel:

USE Music;SELECT ar.ArtistName, COUNT(al.AlbumName) 'Album Count'FROM Artists arINNER JOIN Alben al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 4; 

Ergebnis:

+-------------+-------------+| Künstlername | Albumanzahl |+---------------------+---------------------+| Eiserne Jungfrau | 5 |+-------------+-------------+