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

SQL多表JOIN查询缺失无评分公司行、LEFT JOIN不生效如何修复?

问题核心原因

你修改LEFT JOIN后不生效,是因为遗漏了GROUP BY分组子句:聚合函数AVG()默认会将所有查询结果合并为一行统计值,即使使用LEFT JOIN保留了全量公司数据,没有分组的情况下也不会按公司维度拆分统计结果。

修正后的SQL语句

SELECT 
  company.id, 
  company.title, 
  COALESCE(AVG(ratings.ratings), 0) AS average_rating
FROM companies company
LEFT JOIN companies_ratings ratings
ON ratings.company_id = company.id
GROUP BY company.id, company.title

语句说明

  • 替换INNER JOIN为LEFT JOIN,保证左表companies的所有公司记录都会被保留,没有对应评分记录的公司,关联的ratings表字段值为NULL
  • 新增GROUP BY company.id, company.title,按公司维度分组,确保每个公司对应一条独立的统计结果
  • COALESCE函数用于将没有评分的公司的平均评分从NULL转换为0,如果需要保留NULL值,直接写AVG(ratings.ratings)即可

测试结果

基于你提供的测试表数据,执行上述语句后返回结果如下:

idtitleaverage_rating
1Company 14.0
2Company 20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 12:09:00