Mysql SQL:如何在Group By中包含空的或空的年份

Mysql SQL:如何在Group By中包含空的或空的年份,mysql,Mysql,我想按年份获取计数,并包含带有空值或零值的年份 这是我目前的问题 SELECT YEAR(`date_incident`) as Year ,COUNT(`tblrespond`.`patient_no`) as Total FROM `tblrespond` Inner Join `tblincident` On `tblincident`.`incident_no` = `tblrespond`.`incident_no` Inner Join `tblpatients` On

我想按年份获取
计数
,并包含带有空值或零值的年份

这是我目前的问题

SELECT YEAR(`date_incident`) as Year
,COUNT(`tblrespond`.`patient_no`) as Total  
FROM  `tblrespond` 
Inner Join `tblincident` 
On `tblincident`.`incident_no` = `tblrespond`.`incident_no` 
Inner Join `tblpatients` 
On `tblpatients`.`patient_no` = `tblrespond`.`patient_no` 
Group By YEAR(`date_incident`)
但此查询会跳过数据为空的年份

我想要的是这样生成

YEAR       Total
-----     ------
2011        10
2012        7
2013        0
2014        12
2015        0
2016        5
在我当前的查询中。将跳过2013年和2015年

它有3个关系表
tblrespond
tblincident
tblpartients

tblincident
tblpartients
都连接到
tblrespond

如果列中没有“所有年份”值,则必须提供年份表和左联接查询

  SELECT t.myYear as Year, ifnull(COUNT(`tblrespond`.`patient_no`), 0) as Total 
  from (
  select 2011 as myYear
  union 
  select 2012
  union
  select 2013
  union 
  select 2014
  union 
  select 2015
  union 
  select 2016
  ) t 
  LEFT JOIN  `tblrespond`  on t.myYear = `tblrespond`.YEAR(`date_incident`)
  Inner Join `tblincident` On `tblincident`.`incident_no` = `tblrespond`.`incident_no` 
  Inner Join `tblpatients` On `tblpatients`.`patient_no` = `tblrespond`.`patient_no`

mysql还是sql server?@scaisEdge我很抱歉。我想是mysql。我只是加入了建议的标签。对不起,我会编辑的。它的mysql因为我使用xammpConsider处理应用程序代码中的数据显示问题(例如,“xampp”的第一个或第二个“p”)。好的,我试试。thanks@scaisEdge:但是这个代码没有效率,对吗?如果插入新年值,您的查询也必须更改。@Ulias。。对的这只是对OP的一个建议,只与OP提供的样本和问题有关。但正如他们所说,在我的国家,这总比没有好,我不同意“在这种情况下没有比这更好的了。@scaisEdge我已经创建了一个
tblyear
,并将
year
作为字段并插入了年份。并复制了您的查询并将
t.myYear
更改为
tblyear.year
,但它给了我一个错误。