You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7关联查询:如何包含无评论的企业记录

MySQL 5.7 查询所有企业及对应评论数(含无评论企业)

我使用MySQL 5.7版本,拥有firms(企业表)和firm_reviews(企业评论表)两张表,需要查询所有企业及其对应的评论数量,即使企业没有任何评论也需将其纳入结果集。

原使用的SQL语句如下:

select count(*) as review_count, fr.org_id, f.name from 
  firm_reviews fr right join firms f 
   on fr.org_id = f.org_id 
   group by org_id 
   order by review_count desc;

但该语句无法返回无评论的企业,请问该如何修改?


解决方案

调整后的SQL语句可实现需求:

select  f.org_id, f.name, count(fr.org_id) as review_count 
 from firms f left join firm_reviews fr 
 on f.org_id = fr.org_id group by f.org_id 
 order by review_count desc;

原语句问题解析

  1. 计数逻辑错误:原语句使用count(*)会统计所有匹配行,包括右连接后fr.org_id为NULL的无评论企业行,导致这类企业的review_count被错误统计为1而非0。改用count(fr.org_id)会自动忽略NULL值,无评论时返回0,符合需求。
  2. 分组与字段选择问题:原语句以fr.org_id分组并返回该字段,当企业无评论时fr.org_id为NULL,不仅分组逻辑存在风险,还会导致结果中企业ID为NULL。应改为以f.org_id分组并返回该字段,确保企业ID的正确性。
  3. 连接逻辑优化:从firms表出发做左连接firm_reviews,逻辑上更直观——以所有企业为基础关联评论,天然覆盖无评论的企业,相比右连接更易理解和维护。

内容的提问来源于stack exchange,提问作者timpone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:03:26