获取用户发布的帖子数量?

时间:2014-06-07 00:41:03

标签: mysql

如何使用一个MySQL查询获取用户发布的帖子数量?

除了这个之外我什么都想不到,但是在连接上没有聚合函数。所以我不知道该怎么办。我很肯定joins无法满足我的需要。

select a1.username as Username
from `logs` as a1
left join `logs` as a2
on a1.username = a2.username

例如,我的logs表格中包含有关人员发布的信息。我想找出每个用户有多少帖子,即

Username, Posts
User1     100
User2     200

编辑:很抱歉没有提供足够的信息。

我有一个名为logs的表,它有两列。一列称为username,另一列称为msg。它基本上包含有关人们发布的帖子的信息。

例如,假设名为Red的人发布Hello world。它将保存到表logs中,并将创建一个新行。 usernameRedmsgHello world

我基本上想要获得EVERY SINGLE用户通过其用户名发布的消息数量。即这是我想要的一个例子

Username Posts
Red 1
Blue 10
Sally 30

3 个答案:

答案 0 :(得分:2)

试试这个

SELECT Username, count(Posts) 
FROM `logs`
GROUP BY Username;
祝你好运。

答案 1 :(得分:1)

我假设当你说你不能在连接中使用count(*)时,你的意思是你试过并发现它没有工作而不是你根本不能使用COUNT。所以我在这里使用它。

你是对的,JOIN是COUNT的错误位置。你想要它在SELECT列列表中,并在下面的GROUP BY。按用户名聚合,并计算每个聚合中的条目数。

SELECT Username, COUNT(*) AS Count
FROM logs
GROUP BY Username

答案 2 :(得分:0)

此查询可以帮助您,根据您的要求更改此查询

SELECT users.*, count( posts.user_id ) 
FROM posts LEFT JOIN users ON users.id=posts.user_id 
GROUP BY posts.user_id

可能就像

SELECT users.username, count( logs.username ) as posts 
FROM users LEFT JOIN logs ON users.username=posts.username 
GROUP BY users.username