MySQL zawiera COUNT()
funkcja, która pozwala dowiedzieć się, ile wierszy zostanie zwróconych z zapytania. Ta funkcja jest częścią standardu SQL i może być używana z większością relacyjnych systemów zarządzania bazami danych.
COUNT()
funkcja może być również używana do wpływania na wyniki zapytania, jeśli jest to wymagane, na przykład, zwracając tylko te wyniki, które mają liczbę wierszy większą niż podana kwota.
Ten artykuł zawiera przykłady COUNT()
użycie w MySQL.
Dane
Po pierwsze, oto dane, których użyjemy w przykładach na tej stronie:
SELECT *FROM Zadania;
Wynik:
+---------+--------------------+----------------- +| Identyfikator zadania | Nazwa zadania | Opis zadania |+---------+--------------------+-----------------+ | 1 | Czy ogród | NULL || 2 | Nakarm koty | NULL || 3 | Malowanie dachu | NULL || 4 | Zabierz psa na spacer | NULL || 5 | Relaks | NULL || 6 | Nakarm koty | NULL |+---------+--------------------+-----------------+
Policz wszystkie wiersze w tabeli
Możesz użyć COUNT()
aby zwrócić całkowitą liczbę wierszy w tabeli:
SELECT COUNT(*)FROM zadań;
Wynik:
+----------+| LICZBA(*) |+----------+| 6 |+----------+
Zwraca to liczbę wierszy w tabeli, ponieważ nie podaliśmy żadnych kryteriów do zawężenia wyników.
Zawęź wyniki
Gdy dodamy WHERE
klauzula zawężająca zbiór wyników, otrzymujemy mniejszą liczbę:
SELECT COUNT(*)FROM ZadaniaWHERE Nazwa zadania LIKE '%cat%';
Wynik:
+----------+| LICZBA(*) |+----------+| 2 |+----------+
Pojedyncza kolumna a gwiazdka (*)
Wszystkie poprzednie przykłady używają gwiazdki, aby zastosować liczbę do wszystkich kolumn. Jak w przypadku każdego zapytania, gwiazdka jest opcjonalna i jest używana jako symbol wieloznaczny do zwracania wszystkich kolumn. Więc gdy używasz COUNT()
funkcji, masz również możliwość podania określonych kolumn (w przeciwieństwie do wszystkich kolumn) jako argumentu.
Przykład:
SELECT COUNT(Nazwa zadania)FROM zadań;
Wynik:
+-----------------+| LICZBA(nazwa zadania) |+-----------------+| 6 |+-----------------+
Chociaż ten przykład zwraca ten sam wynik, który otrzymaliśmy, gdy użyliśmy gwiazdki, niekoniecznie zawsze tak będzie. Na przykład, oto co się stanie, jeśli określimy inną kolumnę:
SELECT COUNT(TaskDescription)FROM Zadania;
Wynik:
+-------------------------+| LICZBA(Opis zadania) |+-------------------------+| 0 |+-------------------------+
W tym przypadku otrzymujemy zero, ponieważ ta konkretna kolumna zawiera wartości null w każdym wierszu.
Przykład – wyraźny
Możesz dodać DISTINCT
argument zwracający tylko liczbę wierszy z różnymi wartościami innymi niż NULL
wartości.
Być może zauważyłeś, że TaskName
kolumna ma zduplikowaną wartość („Nakarm koty” pojawia się dwukrotnie). Może to powodować problemy, jeśli nie chcesz, aby duplikaty były liczone.
Oto, jak to wygląda, gdy zastosujemy DISTINCT
argument do TaskName
kolumna:
SELECT COUNT(DISTINCT NazwaZadania)FROM Zadania;
Wynik:
+--------------------------+| COUNT(DISTINCT NazwaZadania) |+--------------------------+| 5 |+--------------------------+
Tak więc, chociaż tabela zawiera sześć wierszy, dwa z nich są duplikatami. Dlatego te dwa są liczone jako jeden, co daje wynik pięciu.
Przykład – Klauzula MIEĆ
Możesz także użyć COUNT()
z HAVING
klauzula ograniczająca zestaw wyników na podstawie liczby wierszy, które zostaną zwrócone.
Oto przykład wykorzystujący inny zestaw danych niż w poprzednich przykładach:
USE Music;SELECT ar.ArtistName, COUNT(al.AlbumName) 'Album Count'FROM arINNER JOIN Albums al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 1;; pre>Wynik:
+-------------------------+--------------+| Nazwa wykonawcy | Liczba albumów |+-------------------------+--------------+| Żelazna Dziewica | 5 || Devin Townsend | 3 || Michael uczy się rocka | 3 || Tom Jones | 3 || Allan Holdsworth | 2 |+-------------------------+--------------+To zapytanie zwraca tylko tych wykonawców, którzy wydali więcej niż 1 album. Oto, co się dzieje, gdy zwiększamy wartość w
HAVING
klauzula:USE Music;SELECT ar.ArtistName, COUNT(al.AlbumName) 'Album Count'FROM Artists arINNER JOIN Albums al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 4;; pre>Wynik:
+--------------+--------------+| Nazwa wykonawcy | Liczba albumów |+--------------+--------------+| Żelazna Dziewica | 5 |+--------------+--------------+