繁体   English   中英

父级按子表数排序

[英]Parent Ordered by number of child tables

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

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

我想列出拥有最多文章的10个用户...尽管找不到我却在任何地方进行搜索...我已经想过了,但徒劳无功,我对SQL查询并不满意。

先感谢您

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所使用的一个;)

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM