MySQL ORDER BY Всего строк пользователя в другой таблице

Предположим, я хочу показать список пользователей, заказывающих наибольшее количество сообщений, которые они отправили.

У меня есть 2 таблицы: Users и Messages

У меня 10 пользователей

Пользователь отправил 20 сообщений (есть 20 строк в таблице «Сообщения»)

 SELECT * FROM messages WHERE user='A' User B sent 17 msgs User C sent 19 User D sent 13 

и так далее.

Я хочу, чтобы запрос, который будет перечислять Пользователей в порядке их общего количества отправленных сообщений. Подобно:

 1. A (20 msgs) 2. C (19 msgs) 3. B (17 msgs) 4. D (13 msgs) 

Я старался, но я не могу найти какой-либо запрос для его выполнения. Пожалуйста помоги. Заранее спасибо.

 SELECT user, COUNT(*) FROM messages GROUP BY user ORDER BY count(*) DESC; 

если вы хотите напечатать имена, присоединитесь к таблице пользователей,

 select user_name, count(*) from users inner join messages m on users.userid=m.messageid group by userid order by count(*) desc; 

Вы можете сортировать с помощью alias :

 SELECT user, COUNT(1) as cnt FROM Messages GROUP BY user ORDER BY cnt DESC; 

или position :

 SELECT user, COUNT(1) as cnt FROM Messages GROUP BY user ORDER BY 2 DESC;