2013-05-22 17 views
42

Se ho tre colonne:MySQL - contare il numero di Unique Valori

orderNumber, name, email 

e vorrei contare quanti messaggi unici sono nella tabella come dovrei andare a fare così?

una dichiarazione come:

SELECT count(email) FROM orders 

mi dà il conteggio totale.

ho cercato SELECT DISTINCT count(email) FROM orders

ma che non mi sembrano essere dare i numeri mi aspetto.

+0

Questo è molto simile a http://stackoverflow.com/questions/8264658/select-count-for-each-distinct-row-mysql-and- php – Danexxtone

risposta

85

uso

SELECT count(DISTINCT(email)) FROM orders 

Distinto fornire ID di posta elettronica unici e poi semplicemente contarli.

+1

Per quanto apprezzi una risposta, potresti spiegare perché questo è diverso da quello che stavo facendo per la mia edificazione? – thatidiotguy

+1

in questo modo stai contando email distinte, senza distinguere il numero di email –

+3

@thatidiotguy, facendo "SELECT DISTINCT count (email) FROM orders" stai contando prima tutte le e-mail (inclusi i duplicati) e poi filtrando usando distinti. così riceverai il numero totale di email non il numero totale di email distinte. –

7
SELECT count(DISTINCT(email)) FROM orders 

sua diverso da un commento, dal momento che i suoi filtri fuori i duplicati prima del conteggio che

0

Per ottenere le migliori prestazioni si consiglia di utilizzare:

SELECT 
sub.email, 
count(1) as 'count_unique' 
FROM 
(SELECT email FROM orders GROUP by email) sub 
Problemi correlati