2013-01-13 74 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。 。 。使用正確的連接語法絕對值得讚賞。 –