【发布时间】:2020-02-10 08:51:53
【问题描述】:
这是我的查询
Select articles.id,articles.userid,articles.article,count(articles_likes.id), count(article_dislikes.id)
from articles
Left join article_likes
on article_likes.article_id=articles.id
Left join article_dislikes
on article_dislikes.article_id=articles.id
group by articles.id ;
我想计算 article_likes 表和 article_dislikes 表中的行数,我得到正确的值最多 2 行。当有第三个等条目时。我的行数计数错误。 我不知道问题出在哪里。我认为我可能会得到错误的值,因为我使用同一个表两次。
我有三张桌子
1)articles 包含 id、userid 和 article
2)Articles_likes 表包含-like_id ,user_id 和 article_id
3)Articles_dislikes 表包含 dislike_id ,user_id 和 article_id
【问题讨论】:
-
不是“加入然后计数”,而是“在子查询中计数然后加入”。作为一种缓解措施 -
COUNT(DISTINCT tableX.fieldY)- 但这仅适用于tableX中的fieldY定义为 UNIQUE。 -
count(articles_likes.id) 这是一个错字 - 调用的表称为 article_likes? AND id 在join中被称为article_id?