我有一个tbl_user,其中包含有关用户的信息,我有一个tbl_article,其中包含文章+ tbl_user的ID
我们有一个父子关系,因为每个用户可能有很多文章,这就是我在文章表中包含user_id的原因。
我想列出拥有最多篇文章的10位用户......虽然我找不到它但我到处都搜索过...我已经考虑过了,但是徒劳无功,我不是很好在SQL查询中。
提前谢谢
答案 0 :(得分:3)
SELECT TOP(10)
tbl_user.id,
COUNT(tbl_article.user_id)
FROM
tbl_user
LEFT JOIN
tbl_article
ON tbl_user.id = tbl_article.user_id
GROUP BY
tbl_user.id
ORDER BY
COUNT(tbl_article.user_id) DESC
LIMIT
10
根据您使用的RDBMS,您可能需要TOP(10)
或LIMIT 10
等。我将两者都包括在内,以便您可以看到,但只使用RDBMS使用的那个;)
答案 1 :(得分:2)
SELECT TOP 10
UserID, COUNT(Article)
FROM tbl_User u
INNER JOIN tbl_Article a
ON a.Userid = u.userid
GROUP BY userid
ORDER BY COUNT(article) DESC
您只需GROUP BY
和JOIN
。
如果您希望包含0篇文章的用户可能会使用LEFT JOIN
。
如果对重复项有疑虑,您也可以选择COUNT(DISTINCT Article)
。