在mysql中找到一个月中的缺失日期

时间:2015-09-05 13:33:51

标签: mysql sql gaps-and-islands

我在mysql中几乎全新,并尝试解决此查询。我有两张桌子

一个是month_april,第二个是month_sales

Month_april

Month_dates             

2015-04-01            
2015-04-02
2015-04-03
2015-04-04
2015-04-05
2015-04-06

  .
  .
  .
  .

2015-04-30

Month_sales

Month_dates    Sale_name
2015-04-01     Remote
2015-04-05     Remote
2015-04-08     Remote
2015-04-09     Remote
2015-04-10     Remote
2015-04-15     Remote
2015-04-20     Remote
2015-04-25     Remote
2015-04-30     Remote

这是两个表,只有一个产品名称" Remote"。我需要" Month_sales"的缺失日期数据。表" Sale_name"

是否可以仅使用month_sales表获取数据?如果没有,那么我如何使用这两个表。

我正在寻找像这样的输出

Month_dates   Sale_name

2015-04-02     Remote
2015-04-03     Remote 
2015-04-04     Remote 
2015-04-06     Remote 
2015-04-07     Remote 
2015-04-11     Remote 
2015-04-12     Remote        
2015-04-13     Remote 
2015-04-14     Remote 
2015-04-16     Remote 
2015-04-17     Remote 
2015-04-18     Remote 
2015-04-19     Remote         
2015-04-21     Remote 
2015-04-22     Remote 
2015-04-23     Remote 
2015-04-24     Remote 
2015-04-26     Remote
2015-04-27     Remote
2015-04-28     Remote
2015-04-29     Remote 

2 个答案:

答案 0 :(得分:0)

这样做你想要的吗?

select ma.month_date, 'Remote' as sale_name
from month_april ma left join
     month_sales ms
     on ma.month_date = ms.month_date
where ms.month_date is null;

答案 1 :(得分:0)

您可以在日期表上left join查找缺少的日期。

select a.month_dates, s.sales_name
from month_april a
left join month_sales s 
on a.month_dates <> s.month_dates
where s.month_dates is not null;

Fiddle