首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >左外部联接不返回空值

左外部联接不返回空值
EN

Stack Overflow用户
提问于 2015-09-30 13:53:10
回答 4查看 1.8K关注 0票数 0

我有一个非常简单的样例查询,我正在尝试完成。

SQL Fiddle

代码语言:javascript
复制
SELECT
    month(s.report_date),
    COALESCE(COUNT(*),0)
FROM
    stat_summary s LEFT OUTER JOIN ref_months m on MONTH(s.report_date) = m.month_id
GROUP BY month(s.report_date)

我的研究结果如下:

我想要的结果应该是:

代码语言:javascript
复制
month  | count
----------------
    1  | 0
    2  | 0
    3  | 0
    4  | 0
    5  | 0
    6  | 0
    7  | 0
    8  | 0
    9  | 4
    10 | 9
    11 | 0
    12 | 0
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-09-30 13:55:25

您需要使用月份表作为主要表:

代码语言:javascript
复制
SELECT
    m.month_id,
    COALESCE(COUNT(s.report_date),0)
FROM ref_months m 
LEFT JOIN stat_summary s 
    ON MONTH(s.report_date) = m.month_id
GROUP BY m.month_id;
票数 3
EN

Stack Overflow用户

发布于 2015-09-30 14:01:23

您可以更改LEFT JOIN表的顺序,并且不需要COALESCE

SqlFiddleDemo

代码语言:javascript
复制
SELECT
    m.month_id,
    [count] = COUNT(s.report_date)
FROM ref_months m 
LEFT JOIN stat_summary s 
    ON MONTH(s.report_date) = m.month_id
GROUP BY m.month_id;
票数 0
EN

Stack Overflow用户

发布于 2015-09-30 14:01:30

你可以试试。正如已经回答的那样,months应该是left join编辑的表。此外,count应该位于adp列上或stat_summary表中的month(s.report_date)列上。

代码语言:javascript
复制
SELECT
m.month_id,
COALESCE(COUNT(adp),0)
FROM ref_months m LEFT OUTER JOIN stat_summary s 
on MONTH(s.report_date) = m.month_id
GROUP BY month(s.report_date),m.month_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32867929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档