2017-06-11 46 views
0

我有26个列,其中前3列是日,月,年的表。其他专栏有一些我必须展示的信息。现在,我必须根据多年的最后一天获取记录。 我试过写代码。根据年份的最后一天选择记录

select * from subscription_stats where year * 10000 + month * 100 + day = LAST_DAY(CONCAT(year,'-',month,'-',day)) 

但是,这将获取从每月最后一天的记录,我想years.And的最后一天也,当我没有实际最后一天的记录那么这个代码将无法正常工作。因此,而不是LAST_DAY,我希望在该月份有一些功能,例如MAX日期。我怎样才能实现这个功能。

+0

如果你想在一年的最后一天,那么你为什么不只是硬编码月,或者我错过了什么? –

+0

将日期作为单个实体存储 – Strawberry

+0

我可以有多条记录,因此它必须是动态的。这就是为什么我不能硬编码它 – karan

回答

1

这是你想要的吗?

select * 
from subscription_stats 
where month = 12 and day = 31; 

返回12月31日的行。

如果你没有对所有天的记录,并且希望在最后一天的数据:

select ss.* 
from subscription_stats ss 
where (ss.month, ss.day) = (select ss2.month, ss2.day 
          subscription_stats ss2 
          where ss2.year = ss.year 
          order by ss2.month desc, ss2.day desc 
          ); 
相关问题