我有一个论坛。我想执行一个SQL查询,这样我就可以得到博客提交最多的用户。我有2个表,blogs
和users
。
blogs
表格author_id
是user_id
表格中的users
。
所以这就是我试图做但却没有成功的事情:
SELECT b.author_id FROM blogs b
INNER JOIN users u ON b.author_id = u.user_id
ORDER BY count(author_id) DESC
GROUP BY b.author_id
LIMIT 0,10;
是否可以帮助我找到大多数博客提交的用户,换句话说,我需要找到author_id
表中最常出现的blogs
。谢谢!
答案 0 :(得分:2)
您不需要加入users
,只需要GROUP BY和LIMIT:
SELECT author_id
FROM blogs
GROUP BY author_id
ORDER BY COUNT(*) DESC
LIMIT 1
GROUP BY告诉COUNT它应该计算哪些组;在这种情况下,它应收集每个author_id
的博客并将其计为单个组。
答案 1 :(得分:0)
SELECT COUNT(a.*) AS total, a.author_id
FROM blogs AS a
GROUP BY author_id
ORDER BY total DESC
LIMIT 1
答案 2 :(得分:0)
查询的不同部分顺序错误。这应该工作
SELECT b.author_id
FROM blogs b
INNER JOIN users u ON b.author_id = u.user_id
GROUP BY b.author_id
ORDER BY COUNT( b.author_id ) DESC
LIMIT 0 , 10
请参阅有关SELECT
Syntax。
另外,我假设您的示例有点简化,因为正如其他人所指出的那样,在这种情况下确实不需要连接。