Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL COUNT() – Uzyskaj liczbę wierszy do zwrócenia przez zapytanie

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; 

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; 

Wynik:

+--------------+--------------+| Nazwa wykonawcy | Liczba albumów |+--------------+--------------+| Żelazna Dziewica | 5 |+--------------+--------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BŁĄD 1452:Nie można dodać lub zaktualizować wiersza podrzędnego:ograniczenie klucza obcego nie powiodło się

  2. PDOException SQLSTATE[HY000] [2002] Brak takiego pliku lub katalogu

  3. JSON koduje wyniki MySQL

  4. Jaki jest maksymalny rozmiar zapytania dla mysql?

  5. Migracja MySQL do PostgreSQL na AWS RDS, część 1