Heim >Datenbank >MySQL-Tutorial >COUNT(Spalte) vs. COUNT(*): Wann sollten Sie die einzelnen SQL-Zählfunktionen verwenden?
*SQL-Zählfunktion: Unterschiede und Anwendungsszenarien zwischen COUNT(column) und COUNT()**
In SQL-Datenbanken sind Zähloperationen grundlegende und häufig verwendete Funktionen. Die Wahl von COUNT(column)
und COUNT(*)
wirkt sich jedoch direkt auf die Ergebnisse aus. In diesem Artikel gehen wir auf die wichtigsten Unterschiede zwischen diesen beiden Zählfunktionen ein.
COUNT(column)
Die Funktion zählt die Anzahl der Nicht-NULL-Werte in der angegebenen Spalte. Wenn eine Zeile in dieser Spalte einen NULL-Wert enthält, wird die Zeile von der Zählung ausgeschlossen. Diese Funktion ist nützlich, wenn Sie eindeutige Werte oder bestimmte Datenpunkte zählen.
Andererseits zählt die Funktion COUNT(*)
die Gesamtzahl der Zeilen in der ausgewählten Gruppierung, unabhängig davon, ob die Spalte NULL-Werte enthält. Es zählt sowohl Nicht-NULL-Werte als auch NULL-Werte.
Dieser Unterschied wird deutlich, wenn es um Tabellen geht, die NULL-Werte enthalten. Betrachten Sie beispielsweise die folgende Abfrage:
<code class="language-sql">SELECT column_name, COUNT(column_name) FROM table GROUP BY column_name HAVING COUNT(column_name) > 1;</code>
Diese Abfrage ruft Zeilengruppen ab, in denen der Wert von column_name
mehr als einmal vorkommt. Wenn wir jedoch COUNT(column_name)
durch COUNT(*)
ersetzen, stoßen wir auf potenzielle Probleme.
Mit COUNT(*)
zählt die Abfrage alle Zeilen in jeder Gruppe, einschließlich derjenigen, die NULL-Werte in column_name
enthalten. Dies kann dazu führen, dass in der Ausgabe eine zusätzliche Zeile mit NULL-Werten und deren Anzahl an NULL-Werten entsteht.
Um dies zu veranschaulichen, betrachten Sie eine Tabelle mit den folgenden Daten:
id | id2 |
---|---|
NULL | NULL |
1 | NULL |
NULL | 1 |
1 | NULL |
NULL | 1 |
1 | NULL |
NULL | NULL |
Die folgende Abfrage mit COUNT(id)
liefert die richtigen Ergebnisse:
<code class="language-sql">SELECT id, COUNT(id) FROM table GROUP BY id HAVING COUNT(id) > 1;</code>
Ausgabe:
id | COUNT(id) |
---|---|
1 | 3 |
Wenn wir jedoch COUNT(*)
verwenden, erhalten wir zusätzliche Zeilen:
<code class="language-sql">SELECT id, COUNT(*) FROM table GROUP BY id HAVING COUNT(*) > 1;</code>
Ausgabe:
id | COUNT(*) |
---|---|
1 | 3 |
NULL | 2 |
Wie oben gezeigt, enthält das Ergebnis der Verwendung von COUNT(*)
eine zusätzliche Zeile, in der id
NULL und eine Anzahl von 2 ist, was die Anzahl der Zeilen angibt, die NULL-id
-Werte enthalten.
Daher hängt die Wahl von COUNT(column)
und COUNT(*)
von den spezifischen Daten und den gewünschten Ergebnissen ab. COUNT(column)
eignet sich besser zum Zählen von Nicht-NULL-Werten, während COUNT(*)
zum Zählen aller Zeilen verwendet wird, einschließlich derjenigen, die NULL-Werte enthalten.
Das obige ist der detaillierte Inhalt vonCOUNT(Spalte) vs. COUNT(*): Wann sollten Sie die einzelnen SQL-Zählfunktionen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!