当前位置: 首页 > 面试题库 >

即使没有对应的mysql结果也如何计数?

邴子实
2023-03-14
问题内容

我正在对查询进行形式化,以按日期排序提供过去一年中提交的报告数量。我用php获取当前年份和月份:

$year = date('Y') - 1;
$month = date('m');

并执行以下查询:SQL:

SELECT month(date_lm) AS `month` ,
count(*) AS `count`
FROM `reports` 
WHERE (status = 'submitted') 
AND (date_lm > 2012-08) 
GROUP BY month(date_lm) 
ORDER BY month(date_lm) ASC

而且由于去年只提交了1个结果,因此我只得到了1个结果…

| month  |  count  |
|   7    |    1    |

但是我希望结果集显示出来:

| month  |  count  |
|   9    |    0    |
|   10   |    0    |
|   11   |    0    |
|   12   |    0    |
|   1    |    0    |
|   2    |    0    |
|   3    |    0    |
|   4    |    0    |
|   5    |    0    |
|   6    |    0    |
|   7    |    1    |
|   8    |    0    |

那可能吗?


问题答案:

您应该将此表与1..12表保持联接。像这样的东西:

SELECT  Months.id AS `month` ,
COUNT(`reports`.date_lm) AS `count`
FROM 
(
  SELECT 1 as ID UNION SELECT 2 as ID UNION  SELECT 3 as ID UNION SELECT 4 as ID 
  UNION  
  SELECT 5 as ID UNION SELECT 6 as ID UNION SELECT 7 as ID UNION SELECT 8 as ID 
  UNION  
  SELECT 9 as ID UNION SELECT 10 as ID UNION SELECT 11 as ID UNION SELECT 12 as ID
) as Months
LEFT JOIN `reports` on Months.id=month(`reports`.date_lm)
                       AND 
                       (status = 'submitted') 
                       AND (date_lm > 2012-08)
GROUP BY Months.id 
ORDER BY Months.id ASC

SQL Fiddle演示



 类似资料:
  • 问题内容: 我有这种简单的查询,它返回给定id的非空整数字段: 问题是,如果找不到ID,则结果集为空。我需要查询始终返回一个值,即使没有结果也是如此。 我有这个东西工作,但我不喜欢它,因为它运行相同子查询的2倍: 如果该行存在,则返回field1,否则返回0。有什么改进的方法吗? 谢谢! 编辑以下一些评论和答案 :是的,它必须在 单个查询语句中, 并且我不能使用count技巧,因为 我只需要返回1

  • 问题内容: 我有一个带有2个表的MySql数据库: 国家是公正的。 结果是a ,a和a 。 并非所有国家/地区在每个日期都有结果。 如何创建一个查询,列出所有国家及其特定结果,但仍然列出它们,并且如果结果表上没有结果,则显示0? 问题答案: 在两个表之间使用LEFT JOIN 要显示0(对于该列),如果没有结果,请使用IFNULL。

  • 我希望执行一个(Postgre)SQL本机查询,它既不是“选择”查询,也不是“更新”查询,也不是“删除”查询。它是“刷新物化视图名称”据我所知没有结果。 使用JPA/JPQL执行此类查询的正确方法是什么? 似乎需要结果集或更新/删除计数。

  • 问题内容: 我正在生成要显示在折线图中的数据。不幸的是,我无法弄清楚如何使上面的查询显示0来表示没有用户注册的日期。所以目前我的输出可能是这样的: 但是我想要的是 我目前确实有一个工作版本,该版本将MySQL结果存储到数组中,然后PHP循环遍历并填补空白。这似乎很混乱,我希望可以通过MySQL解决方案。我已经对该站点进行了很好的搜索,但是努力了解一些实现。有什么建议么? 问题答案: 您可以使用My

  • 我使用spring数据和hibernate。我有一个实体(TestEntity)。我创建了一个自定义hibernate类型,将一个字符串字段反序列化为两列。如果我持久化一个实体,然后对其进行更改,则一切正常,hibernate会发送更新查询(它使我的类型正常工作,而对DB的更新查询会将我的旧列“拆分”为两个新列)。但我的目标是让这项记录成为移民之王。我不能使用普通的DB迁移,因为我的自定义类型中有