如何使用一个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
中,并将创建一个新行。 username
为Red
,msg
为Hello world
我基本上想要获得EVERY SINGLE用户通过其用户名发布的消息数量。即这是我想要的一个例子
Username Posts
Red 1
Blue 10
Sally 30
答案 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