0

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

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

但这将从每个月的最后一天获取记录。当我在记录中没有实际的最后一天时,此代码将不起作用。所以不是 LAST_DAY 我想要一些功能,比如那个月的 MAX 日期。我怎样才能实现这个功能。

4

1 回答 1

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
              );

尽管它不会使此查询变得更简单,但您应该将日期作为日期存储在表中。也就是说,一个日期,而不是年/月/日的三个单独的列。

于 2017-06-09T10:57:43.303 回答