gpt4 book ai didi

mysql - 从过去 12 个月中选择行

转载 作者:行者123 更新时间:2023-11-30 22:45:41 24 4
gpt4 key购买 nike

有一个名为 timeDATETIME 列。我如何才能选择属于过去 existing 12 个月内的所有行(不在从今天开始的去年)?并非每个月都可能有一行,几个月可能不止一行。

例如,从这个表 (ORDER BY time DESC) 中,将选择 ID 为 2 到 17 的行。

id    time
-- ----
17 2015-04-01
16 2015-04-01
15 2015-03-01
14 2015-02-01
13 2015-01-01
12 2014-12-01
11 2014-11-01
10 2014-10-01
9 2013-12-01
8 2013-11-01
7 2013-10-01
6 2013-09-01
5 2013-09-01
4 2013-09-01
3 2013-09-01
2 2013-08-01
1 2013-07-01

另一种表达方式:

将上表按月/年分组,我们得到:

2015-04
2015-03
2015-02
2015-01
2014-12
2014-11
2014-10
2013-12
2013-11
2013-10
2013-09
2013-08
2013-07

现在从该列表中取出最近的 12 个月,即除 2013 年 7 月以外的所有内容。

2015-04
2015-03
2015-02
2015-01
2014-12
2014-11
2014-10
2013-12
2013-11
2013-10
2013-09
2013-08

然后选择那些月份的所有内容。

我想我可以用多个查询或子查询来做到这一点,但还有其他方法吗?

最佳答案

如果您的时间字段只有月份精度,您可以使用非常简单的子选择来完成:

SELECT * FROM Table t1
WHERE time IN (
SELECT DISTINCT time FROM Table t2 ORDER BY time DESC LIMIT 12
)

如果您的时间戳是全精度的,您可以做同样的事情,但您需要进行一些日期操作以将日期舍入到月份以进行比较。

关于mysql - 从过去 12 个月中选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com