MySQL - 是不是可以显示空行? [复制]
Posted
技术标签:
【中文标题】MySQL - 是不是可以显示空行? [复制]【英文标题】:MySQL - is it possible to display empty rows? [duplicate]MySQL - 是否可以显示空行? [复制] 【发布时间】:2012-12-04 14:37:17 【问题描述】:可能重复:Displaying zero valued months with SQL
对于某个属性,是否可以显示它的行,即使它是空的?
假设我有属性date_of_car_sale
。另外,假设我想做一个月度报告。
从 2009 年 1 月到 12 月,公司有两个月休假,所以 6 月和 8 月没有 date_of_car_sale
。
是否可以制作显示 2009 年每个月的报告,即使 6 月和 8 月没有数据值?
我可以制作每个月的节目,并将它们分组以仅显示个别月份。但似乎无法显示六月和八月,因为它们是空的。
PS:这只需要公司表中的一列。
【问题讨论】:
"让六月和八月显示" 这听起来像是你有另一个表或一些配置来存储所有月份。如果没有,如果它们是空的,您也无法显示它们,因为您的软件绝不会与那几个月有关。 如果您发布表架构和一些示例数据会很好。 【参考方案1】:在这种情况下,我通常会制作一个包含我想要显示的所有值的表格,并对我的数据集进行左连接。因此,在您的情况下,我会创建一个名为“months”的表,其中包含一个日期列,该列存储当月的第一天,或者可能包含第一天和最后一天的两列,并像这样加入:
SELECT m.month_first, COUNT(x.date_of_car_sale) as sales
FROM months m
LEFT JOIN (
SELECT date_of_car_sale
FROM sales
) x ON m.month_first <= x.date_of_car_sale
AND m.month_last >= x.date_of_car_sale
GROUP BY m.month_first
ORDER BY m.month_first
【讨论】:
我刚刚做到了,谢谢。但是在使用 LEFT JOIN 的情况下,我总结的 times_of_sale 现在显示为 (NULL)。我试过 ISNULL 但它返回 1。我之前测试过,我总结的销售时间从 TIME_FORMAT 产生数字。如何重新显示我的时间?我尝试了外部联接,但不起作用。 如果您发布您的表结构和您当前使用的查询会有所帮助。 想通了,对不起,这是一个愚蠢的问题!感谢您的帮助:) 当使用外连接时,COUNT(*)
和 COUNT(1)
将在没有销售的月份给出 1 而不是 0。以上是关于MySQL - 是不是可以显示空行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章