2016-11-18 2 views
7

MSDN Dokumentation heißt es:COUNT (*) enthält Nullwerte?

COUNT (*) gibt die Anzahl der Elemente in einer Gruppe. Dazu gehören NULL Werte und Duplikate.

Wie können Sie einen Nullwert in einer Gruppe haben? Kann jemand den Punkt erklären, den sie versuchen zu machen?

+3

Wenn Sie weiter nach oben ein wenig sehen sie " Bessere Formulierung verwendet: _ "COUNT (*) gibt die Anzahl der Zeilen in einer angegebenen Tabelle zurück, ohne Duplikate loszuwerden. Es zählt jede Zeile einzeln. Dazu gehören auch Zeilen, die Nullwerte enthalten. "_ –

+0

@TimSchmelter Danke, das habe ich verpasst. Das sagt viel klarer aus. –

+0

Ich habe meine Kommentare entfernt, weil ich jetzt deine Frage und deinen Kommentar noch einmal gelesen habe. Warum hat Microsoft so eine schlimme Erklärung in der Dokumentation geschrieben? "Ich kenne die Antwort auf diese Frage nicht. –

Antwort

18

Wenn Sie diese Tabelle haben

Tabelle 1:

Field1 Field2 Field3 
--------------------------- 
    1   1   1 
    NULL  NULL  NULL 
    2   2  NULL 
    1   1   1 

Dann

SELECT COUNT(*), COUNT(Field1), COUNT(Field2), COUNT(Field3) 
FROM Table1 

Ausgabe ist:

COUNT(*) = 4; -- count all rows even null/duplicates 

-- count only rows without null values on that field 
COUNT(Field1) = COUNT(Field2) = 3 
COUNT(Field3) = 2 
+0

Ich kann eine Zeile erstellen, in der alle Felder null sind? Ist der Fall Microsoft in ihrer Dokumentation? –

+1

Ja, Sie können alle Nullen in einer Reihe haben, solange alle Felder es zulassen.Wäre sehr * komisch *, aber Sie können.Sich nicht sicher über Microsoft Absicht auf die Dokumentation.Dies ist etwas, was Sie nach dem Spielen mit der Funktion lernen müssen habe die gleiche Verwirrung beim Start. –

+0

Du hast absolut recht, ich habe gerade eine temporäre Tabelle erstellt und sicher genug, dass COUNT (*) die Nullzeile enthielt. Nachdem ich in diesem Zusammenhang darüber nachgedacht habe, Ich denke, der praktischere Nutzen von diesem und dem Punkt, den Microsoft wahrscheinlich versucht, ist die Gruppierung durch einen Nullwert. Zum Beispiel, wenn Feld 2 und 3 in Ihrem Beispiel nicht null waren und Sie nach Feld 1 gruppiert waren. –

0

Je nachdem, wie Sie Ihre Joins durchführen, können Sie einen Nullwert in einer Zeile angeben. Stellen Sie sicher, dass Sie das richtige Feld zählen oder Ihre Joins korrigieren.