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

seleziona conteggio distinto (id) vs seleziona conteggio (id distinto)

Quando si esegue select distinct count(id) quindi stai praticamente facendo:

select distinct cnt
from (select count(id) as cnt from t) t;

Poiché la query interna restituisce solo una riga, il distinct non sta facendo niente. La query conta il numero di righe nella tabella (beh, più precisamente, il numero di righe in cui id non è null ).

D'altra parte, quando lo fai:

select count(distinct id)
from t;

Quindi la query conta il numero di valori diversi che id prende posto in tavola. Questo sembrerebbe quello che vuoi.