0

コメントが最も多いユーザーを表示する必要があります。私は2つのテーブルを持っています:

表:ユーザー

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は、最も多くのコメントがありますが、コメントの数ですべてを結果にする必要があるとしましょう。また、結果として、Usersテーブルに保存されているユーザーの電子メールを表示する必要があります。

カウントし、同時に両方のテーブルをチェックインして結果を返すにはどうすればよいですか?または、最初にユーザー情報を取得してからカウントする必要がありますか?

4

2 に答える 2

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 BYますLIMIT

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
于 2013-01-13T16:08:44.430 に答える
2
select username,email,count(*) as cnt 
from users, comments 
where author = username 
 group by username
 order by cnt desc
 limit 1
于 2013-01-13T16:10:24.210 に答える