Mysql
 sql >> Database >  >> RDS >> Mysql

count(*) e count(column_name), qual è la differenza?

  • COUNT(*) conta tutte le righe nel set di risultati (o nel gruppo se si utilizza GROUP BY).
  • COUNT(column_name) conta solo le righe in cui column_name NON è NULLA. Questo potrebbe essere più lento in alcune situazioni anche se non ci sono valori NULL perché il valore deve essere controllato (a meno che la colonna non sia nullable).
  • COUNT(1) è uguale a COUNT(*) poiché 1 non può mai essere NULL.

Per vedere la differenza nei risultati puoi provare questo piccolo esperimento:

CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);
SELECT
    COUNT(*) AS a,
    COUNT(x) AS b,
    COUNT(1) AS c
FROM table1;

Risultato:

a   b   c
3   2   3