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

Dlaczego COUNT() pokazuje tylko jeden wiersz tabeli?

COUNT() to funkcja agregująca, która jest zwykle połączona z GROUP BY klauzula.

curdate() to funkcja daty, która wyświetla bieżącą datę.

Tylko MySQL (o ile wiem) pozwala na tę składnię bez użycia GROUP BY klauzula. Ponieważ go nie podałeś, COUNT(*) policzy całkowitą liczbę wierszy w tabeli, a owner kolumna zostanie wybrana losowo/domyślnie optymalizatora/według indeksów.

To powinno być Twoje zapytanie :

select owner, count(*) 
from pet
group by owner;

Który mówi optymalizatorowi, aby zliczył całkowitą liczbę wierszy, dla każdego właściciel.

Gdy nie wspomniano o klauzuli group by - funkcje agregacji są stosowane do wszystkich danych w tabeli.

EDYTUJ: Liczba, która zostanie zastosowana do każdego wiersza, nie może być normalnie wykonana za pomocą COUNT() i zwykle używane z funkcją analityczną -> COUNT() OVER(PARTITION...) który niestety nie istnieje w MySQL. Inną opcją jest wykonanie JOIN/CORRELATED QUERY dla tej dodatkowej kolumny.

Kolejna edycja: Jeśli chcesz zsumować liczbę przy każdym właścicielu, możesz użyć podzapytania:

SELECT owner,
       (SELECT COUNT(*) FROM pet) as cnt
FROM pet


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prawidłowy sposób na utrzymanie aktywnych połączeń w puli (lub przerwanie ich i uzyskanie nowych) podczas dłuższej nieaktywności dla MySQL, aplikacji Grails 2

  2. Przechowywanie znaków Urdu w MySQL

  3. czy mój duży stół mysql jest skazany na awarię?

  4. Uzyskaj drugą najwyższą wartość w tabeli MySQL

  5. Pobieranie pola UTC DATETIME z MySQL w Javie, gdy strefa czasowa serwera nie jest UTC