父级按子表数量排序

时间:2011-12-20 19:55:16

标签: php mysql sql parent

我有一个tbl_user,其中包含有关用户的信息,我有一个tbl_article,其中包含文章+ tbl_user的ID

我们有一个父子关系,因为每个用户可能有很多文章,这就是我在文章表中包含user_id的原因。

我想列出拥有最多篇文章的10位用户......虽然我找不到它但我到处都搜索过...我已经考虑过了,但是徒劳无功,我不是很好在SQL查询中。

提前谢谢

2 个答案:

答案 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 BYJOIN

如果您希望包含0篇文章的用户可能会使用LEFT JOIN

如果对重复项有疑虑,您也可以选择COUNT(DISTINCT Article)