首页 > 解决方案 > 在mysql数据库中计数

问题描述

这是我的查询:

Select articles.id,articles.userid,articles.article,count(articles_likes.id), count(article_dislikes.id) 
from articles
Left join article_likes 
on article_likes.id=articles.id 
Left join article_dislikes 
on article_dislikes.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

标签: mysqldatabasecount

解决方案


在每个表中分别聚合articles_likesarticles_dislikes然后加入articles结果:

select a.id, a.userid, a.article,
  coalesce(l.likes, 0) likes,  
  coalesce(d.dislikes, 0) dislikes
from articles a
left join (
  select article_id, count(*) likes, 
  from articles_likes
  group by article_id
) l on l.article_id = a.id
left join (
  select article_id, count(*) dislikes, 
  from articles_dislikes
  group by article_id
) d on d.article_id = a.id

articles_likesarticles_dislikesto的正确连接articles也是由article_ididof的列articles


推荐阅读