Heim >Datenbank >MySQL-Tutorial >COUNT(*) vs. COUNT(Spalte): Was ist der Unterschied in SQL?

COUNT(*) vs. COUNT(Spalte): Was ist der Unterschied in SQL?

Susan Sarandon
Susan SarandonOriginal
2025-01-13 14:57:43592Durchsuche

COUNT(*) vs. COUNT(Column): What's the Difference in SQL?

*COUNT () und COUNT (Spaltenname) in SQL: subtile, aber wichtige Unterschiede**

Bei der Verwendung von SQL-Abfragen ist es wichtig, die Feinheiten verschiedener Aggregatfunktionen wie COUNT(*) und COUNT(Spaltenname) zu verstehen. Ziel dieses Artikels ist es, die subtilen, aber wichtigen Unterschiede zwischen diesen beiden Funktionen zu verdeutlichen.

*Vergleich von COUNT (Spaltenname) und COUNT ()**

COUNT (Spaltenname) zählt die Anzahl der Nicht-Null-Werte in der angegebenen Spalte. Diese Funktion ermittelt die Anzahl der in einer Spalte vorhandenen Werte, die bestimmte Kriterien erfüllen.

COUNT(*) hingegen zählt alle Zeilen in der Tabelle, unabhängig davon, ob sie Nullwerte enthalten. Er wird manchmal als „universeller Quantor“ bezeichnet, da er jede Zeile in der Tabelle berücksichtigt und so effektiv die Gesamtzahl der Zeilen zurückgibt.

Praxisbeispiel

Betrachten Sie die folgende Abfrage, die die Anzahl doppelter Werte in einer Tabelle zählt:

<code class="language-sql">select column_name, count(column_name)
from table
group by column_name
having count(column_name) > 1;</code>

In dieser Abfrage wird die Funktion COUNT(column_name) verwendet, um die Anzahl der Vorkommen von Nicht-Null-Werten in der angegebenen Spalte (column_name) zu zählen. Wenn ein Wert mehr als einmal ungleich Null erscheint, wird die Zeile als Duplikat betrachtet.

Wenn wir in dieser Abfrage die Funktion COUNT(Spaltenname) durch COUNT(*) ersetzen, werden die Ergebnisse etwas anders ausfallen. Die geänderte Abfrage gibt eine zusätzliche Zeile im Ergebnissatz zurück, die einen Nullwert für die Spalte „column_name“ und die Gesamtzahl der Zeilen in der Tabelle enthält (einschließlich der Zeilen, die Nullwerte enthalten).

Demo

Um diesen Unterschied zu veranschaulichen, betrachten Sie den folgenden SQL-Code:

<code class="language-sql">create table #bla(id int,id2 int)
insert #bla values(null,null)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,null)

select count(*),count(id),count(id2)
from #bla</code>

Die Ergebnisse der Ausführung dieser Abfrage sind wie folgt:

<code>7   3   2</code>

Die Funktion COUNT(*) gibt 7 zurück, was die Gesamtzahl der Zeilen in der Tabelle angibt. Die Funktion COUNT(id) gibt 3 zurück, was die Anzahl der Zeilen mit Nicht-Null-Werten in der ID-Spalte darstellt. Die Funktion COUNT(id2) gibt 2 zurück, was die Anzahl der Zeilen mit Nicht-Null-Werten in der Spalte id2 angibt.

Zusammenfassend besteht der Hauptunterschied zwischen COUNT(Spaltenname) und COUNT() darin, dass COUNT() Nullwerte in seine Zählung einbezieht, während COUNT(Spaltenname) sie ausschließt. Das Verständnis dieser Unterscheidung ist für eine genaue Datenanalyse und Abfrageoptimierung von entscheidender Bedeutung.

Das obige ist der detaillierte Inhalt vonCOUNT(*) vs. COUNT(Spalte): Was ist der Unterschied in SQL?. 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