Heim >Datenbank >MySQL-Tutorial >COUNT(Spalte) vs. COUNT(*): Wann sollten Sie die einzelnen SQL-Zählfunktionen verwenden?

COUNT(Spalte) vs. COUNT(*): Wann sollten Sie die einzelnen SQL-Zählfunktionen verwenden?

DDD
DDDOriginal
2025-01-13 15:07:43440Durchsuche

COUNT(column) vs. COUNT(*): When Should You Use Each SQL Count Function?

*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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn