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条,我猜这两个表有相同之处吗?谁能告诉我问题出在哪里?
将组更改为在注释表上
GROUP BY a.id
您的LEFT JOIN
是正确的,但是您要按右表comment_id
的列likesdislikes
分组,因此您的结果不包括left表comments
的所有行。另外,进行聚合时,不应将SELECT
子句中未包含或未聚合的列包括在GROUP BY
列表中(尽管MySql允许),因此请删除b.id
,b.username
,b.likes
和b.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