sql >> Databasteknik >  >> RDS >> Mysql

välj distinct count(id) kontra select count(distinct id)

När du gör select distinct count(id) då gör du i princip:

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

Eftersom den inre frågan endast returnerar en rad, är distinct gör ingenting. Frågan räknar antal rader i tabellen (nåja, mer exakt, antalet rader där id är inte null ).

Å andra sidan, när du gör:

select count(distinct id)
from t;

Sedan räknar frågan antalet olika värden som id tar sig an i tabellen. Detta verkar vara vad du vill ha.



  1. ett antal för varje join - optimering

  2. MySQL - Hur ökar man varchar-storleken på en befintlig kolumn i en databas utan att bryta befintliga data?

  3. MySQL-fråga infogas inte när PHP-variabeln innehåller enkla citattecken

  4. Dynamiskt radspann vid hämtning av poster från databasen