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 *
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
                           );
于 2017-06-11T12:37:11.607 回答