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

vælg distinct count(id) vs select count(distinct id)

Når du select distinct count(id) så laver du som udgangspunkt:

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

Fordi den indre forespørgsel kun returnerer én række, den distinct laver ikke noget. Forespørgslen tæller antallet af rækker i tabellen (nå, mere præcist, antallet af rækker hvor id er ikke null ).

På den anden side, når du gør:

select count(distinct id)
from t;

Derefter tæller forespørgslen antallet af forskellige værdier, der id tager fat i tabellen. Dette ser ud til at være det, du ønsker.



  1. MYSQL, Max, Group by og Max

  2. Slet, opdater med afledte tabeller?

  3. VÆLG og angiv børn og forældre

  4. MAKETIME() Eksempler – MySQL