显示喜欢和不喜欢的查询,不显示第一张表中的所有行

问题描述 投票:-1回答:2
comment
id
comment
username

第二个寓言

likesdislikes
id
likes
dislikes
comment_id
username

我一直在尝试创建一个简单的注释脚本,您可以对该注释进行增补或不喜欢它。我已经创建了显示的表。然后我尝试了以下查询:

select a.id a_id,a.comment,a.username,b.id,b.comment_id,b.username,b.likes,b.dislikes, sum(b.likes) as likescount, sum(b.dislikes) as dislikescount 
from comments a left join likesdislikes b on a.id=b.comment_id
GROUP BY b.comment_id 
ORDER BY likescount DESC, a.id DESC LIMIT 0,10

所以该查询正在运行,显示每个注释及其喜欢和不喜欢的次数,问题是我有30多个注释,但是此查询仅显示约8条,我猜这两个表有相同之处吗?谁能告诉我问题出在哪里?

mysql
2个回答
0
投票

将组更改为在注释表上

GROUP BY a.id

0
投票

您的LEFT JOIN是正确的,但是您要按comment_id的列likesdislikes分组,因此您的结果不包括leftcomments的所有行。另外,进行聚合时,不应将SELECT子句中未包含或未聚合的列包括在GROUP BY列表中(尽管MySql允许),因此请删除b.idb.usernameb.likesb.dislikes,因为它们将返回不确定地选择的值:

select 
  a.id a_id, a.comment, a.username, 
  sum(b.likes) as likescount, sum(b.dislikes) as dislikescount 
from comments a left join likesdislikes b 
on a.id = b.comment_id
GROUP BY a.id a_id, a.comment, a.username 
ORDER BY likescount DESC, a.id DESC LIMIT 0,10
© www.soinside.com 2019 - 2024. All rights reserved.