0

假设,我想显示一个用户列表,按他们发送的最多消息数排序。

我有 2 张桌子:UsersMessages

我有 10 个用户

用户 A 发送了 20 条消息(在 Messages 表中有 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)

我努力尝试,但找不到任何查询来执行此操作。请帮忙。提前致谢。

4

3 回答 3

4
SELECT user, COUNT(*) FROM messages GROUP BY user ORDER BY count(*) DESC;
于 2012-10-04T15:19:45.290 回答
0

您可以使用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;
于 2012-10-04T15:26:01.053 回答
0

如果要打印名称加入用户表,

select user_name, count(*) from users inner join messages m on users.userid=m.messageid group by userid order by count(*) desc;
于 2012-10-04T15:22:58.277 回答