2017-06-09 93 views
0

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

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

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

回答

1

您希望数据中每个月的最后日期。对于这一点:

select s.* 
from subscription_stats s 
where s.day = (select max(s2.day) 
       from subscription_stats s2 
       where s2.year = s.year and s2.month = s.month 
      ); 

虽然它不会使这个查询简单得多,你应该存储日期为日期在表格中。也就是说,一个日期,而不是三个年/月/日的单独列。

+0

感谢Gordon Linoff非常迅速地给予正确回答。有用。 – karan

+0

你能告诉我怎样才能获取数据只有几年的最后一天? – karan

+0

@karan。 。 。子查询只会比较年份,而不是月份。 –