MySQL - 如果没有,则返回空值

时间:2016-09-29 09:09:08

标签: mysql sql database

我在MySQL中有以下架构(只读权限数据库)

http://sqlfiddle.com/#!9/1eafc/1

正如您所看到的,只有5个国家/地区代码:

GB, USA, GR, ES, DE

有些月份,有些记录可能不包含其中一个国家/地区,因为当月没有为该国家/地区创建记录。

正如您在sqlfiddle中所看到的,GB记录仅在9月创建。

如果该月份没有任何国家/地区的记录,而不是未被退回,则显示0或NULL或其他内容是否有任何方法?

到目前为止,我已尝试过ISNULLIFNULLCOALESCE的不同变体,但这些变体都没有效果。

我想返回类似以下内容的内容

UK 0
USA 13
GR 5
ES 12
DE 1

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

好的,所以代替功能性的SQLFiddle,我会做一些假设。国家/地区代码与分组数据位于同一个表中。

如果是这种情况,为什么不使用:

select DT1.CountryCode, count(DT2.ValueForCounting) as ReturnedCount
from (
select distinct CountryCode
from DataTable ) DT1
left join DataTable DT2
on DT1.CountryCode = DT2.CountryCode
and DT2.QueryConditions = 'Stuff'    -- Use the join condition instead of a where clause for anything to do with DT2

答案 1 :(得分:0)

你的小提琴链接没有加载,

但我想我有两个不同的想法,

  1. 创建功能并使用if条件管理它。      或
  2. 在月份,国家和地图表格中创建视图,并将月份放在左侧连接
  3. 希望它有效。