gpt4 book ai didi

Mysql 选择 1 个月前保存的记录,如果没有找到,则选择更早的记录

转载 作者:行者123 更新时间:2023-11-29 02:00:15 24 4
gpt4 key购买 nike

我有一个类似于 :

的小统计表
+----+----------+-------+------------+-------------+
| id | stat_key | value | created_at | customer_id |
+----+----------+-------+------------+-------------+

每天,cron 都会为每个客户执行一些计算并保存统计信息。

现在我想检索 30 天前的统计数据,或者如果客户是新客户,只要少于 30 天前的旧统计数据就可用。

所以我尝试执行以下查询,但对于超过 30 天的客户,返回的始终是所有时间的旧统计数据:

SELECT * 
FROM stat_table
WHERE customer_id = 1 AND stat_key = 'some_key'
HAVING (DATE(created_at) = DATE(NOW() - INTERVAL 30 DAY)
OR DATE(created_at) = DATE(MIN(created_at)));

有没有办法做到这一点? "给我 30 天前的数据,如果找不到,你可以找到更早的数据"

谢谢!

最佳答案

您可以使用 limitorder by 来检索不超过 30 天的最旧行:

SELECT  * 
FROM stat_table
WHERE customer_id = 1
AND stat_key = 'some_key'
AND created_at > NOW() - INTERVAL 30 DAY
ORDER BY
created_at
LIMIT 1

关于Mysql 选择 1 个月前保存的记录,如果没有找到,则选择更早的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16688449/

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