我有一个tbl_user,其中包含有关用户的信息,我有一个tbl_article,其中包含物品+的tbl_user家长通过孩子的表
我们有父子关系的ID的数量排序,因为每用户可能有很多文章,这就是为什么我在文章表中包含user_id的原因。
我想列出有大多数文章的10个用户......我找遍虽然我无法找到它......我想过这个问题,可是没有用,我不擅长SQL查询。
预先感谢您
我有一个tbl_user,其中包含有关用户的信息,我有一个tbl_article,其中包含物品+的tbl_user家长通过孩子的表
我们有父子关系的ID的数量排序,因为每用户可能有很多文章,这就是为什么我在文章表中包含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 BY
和JOIN
。
如果没有为用户提供要包括0文章的潜力,你应该使用LEFT JOIN
。
选项还COUNT(DISTINCT Article)
如果有关于重复的关注即可。
什么是RDBMS你在用吗?如果第10名有一个平局会怎么样? – 2011-12-20 19:58:51
我只是使用mySQL的PHP ...这是关于一个web项目 – SmootQ 2011-12-20 20:07:15