COUNT()
è una funzione di aggregazione che di solito è combinata con un GROUP BY
clausola.
curdate()
è una funzione di data che restituisce la data corrente.
Solo MySQL (per quanto ne so) consente questa sintassi senza utilizzare GROUP BY
clausola. Poiché non l'hai fornito, COUNT(*)
conterà la quantità totale di righe nella tabella e il owner
la colonna verrà selezionata in modo casuale/impostazione predefinita dell'ottimizzatore/in base agli indici.
Questa dovrebbe essere la tua domanda :
select owner, count(*)
from pet
group by owner;
Ciò indica all'ottimizzatore di contare le righe totali, per ciascuna proprietario.
Quando nessuna clausola group by menzionata, le funzioni di aggregazione vengono applicate a tutti i dati della tabella.
MODIFICA: Normalmente non è possibile eseguire un conteggio che verrà applicato a ciascuna riga con COUNT()
e di solito usato con una funzione analitica -> COUNT() OVER(PARTITION...)
che purtroppo non esiste in MySQL. L'altra opzione è quella di creare una JOIN/CORRELATED QUERY
per questa colonna aggiuntiva.
Un'altra modifica: Se vuoi totalizzare il conteggio accanto a ciascun proprietario, puoi utilizzare una query secondaria:
SELECT owner,
(SELECT COUNT(*) FROM pet) as cnt
FROM pet