problemi con conteggio

sto scrivendo una query che dovrebbe tirarmi fuori i 10 utenti che hanno scritto più messaggi, ordinati in decrescente (quindi il primo è quello che ne ha scritti di più) ma non riesco ad applicare la condizione!!

La tabella è di questo tipo:

id_messaggio messaggio id_utente data_ins

... e questa è la mia query ma mi da errore sul WHERE

SELECT id_messaggio, id_utente, COUNT(*) AS n
FROM messaggi
WHERE n > 10
GROUP BY id_utente
ORDER BY n DESC

having

La query non può funzionare perchè il WHERE viene applicato prima del conteggio di conseguenza
mysql non può riconoscere il campo "n" in quanto ancora non esiste.
Per applicare una condizione su un raggruppamento (GROUP BY) devi utilizzare HAVING in questo modo:

SELECT `id_messaggio`, `id_utente`, COUNT(*) AS `n`
FROM `messaggi`
GROUP BY `id_utente`
HAVING `n` > 10
ORDER BY `n` DESC
LIMIT 10;

Ho aggiunto la LIMIT visto che ti servono solo gli i 10 utenti che hanno scritto + messaggi

ok

FUNZIONA!! non conoscevo l'HAVING..
Sei un drago, grazie!