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