2013-01-13 134 views
0

我需要向用户显示最多评论。我有两个表:以最大计数显示结果mysql

表:用户

ID | USERNAME | EMAIL 
------------------------------ 
1 | USER01 | EMAIL01 
2 | USER02 | EMAIL02 
3 | USER03 | EMAIL03 
4 | USER04 | EMAIL04 

表:评论

ID | AUTHOR  | COMMENT 
---------------------------------- 
1 | USER01 | COMMENT... 
2 | USER02 | COMMENT... 
3 | USER01 | COMMENT... 
4 | USER03 | COMMENT... 

在这个例子中user01拥有最多评论,但可以说我有导致他们都有自己的评论数。而且结果我必须向用户显示存储在用户表中的电子邮件。

如何计算并同时检查两个表中的结果?或者我应该先获取用户信息然后计数?

+0

请告诉我们,你已经尝试? – mtk

回答

2
select username,email,count(*) as cnt 
from users, comments 
where author = username 
group by username 
order by cnt desc 
limit 1 
3

下面这个查询处理有数量最多的评论重复行,

SELECT a.userName 
FROM Users a 
     INNER JOIN Comments b 
      ON a.username = b.author 
GROUP BY a.userName 
HAVING COUNT(*) = 
    (
     SELECT MAX(totalCount) 
     FROM 
     (
      SELECT author, COUNT(*) totalCount 
      FROM comments 
      GROUP BY author 
     ) a 
    ) 

但如果你想不来处理,它可以简单地通过使用ORDER BYLIMIT

SELECT a.userName, COUNT(*) totalCount 
FROM Users a 
     INNER JOIN Comments b 
      ON a.username = b.author 
GROUP BY a.userName 
ORDER BY totalCount DESC 
LIMIT 1 
+0

谢谢你!很高兴学习新事物! – ChrisMe

+0

+1。 。 。使用正确的连接语法绝对值得赞赏。 –