gpt4 book ai didi

mysql - 实时更改MySQL中的 "status"行不同时间间隔

转载 作者:行者123 更新时间:2023-11-29 14:34:05 25 4
gpt4 key购买 nike

我将尝试尽可能详细地解释问题,但不解释应用程序本身。

我有一个 MySQL 表,用于记录消息发送的时间以及消息是否已读或未读。现在我需要在此表中创建一列,根据未读的时间间隔为消息提供状态。

For example, if message was unread for:
1h - it gets status of "1";
1day - status of "2";
2days - status of "3";
3days - status of "4";
7days and more - status of "5".

假设我有一条消息于 13:20 发送,但未读,状态为“NULL”。我需要它在 14:20 的状态为“1”,并在第二天 13:20 的状态为“2”。

现在我可以想到几个选项,但它们涉及每分钟的 Crone 工作和/或大量计算。我的网站正在快速增长,我想找到一个最佳且可扩展的选项。也许 MySQL 内部有一些选项,比如触发器之类的。

感谢任何帮助<3

最佳答案

看起来这可能在检索消息的查询中处理更合适,而不是在连续更新表的查询中处理。

您可以在检索消息后计算应用程序中的状态,也可以从查询本身返回计算出的状态字段:

SELECT
user,
from,
subject,
time,
created,
read,
IF(NOW() - INTERVAL 7 DAY > created, 5,
IF(NOW() - INTERVAL 3 DAY > created, 4,
IF(NOW() - INTERVAL 2 DAY > created, 3
IF(NOW() - INTERVAL 1 DAY > created, 2
IF(NOW() - INTERVAL 1 HOUR > created, 1
0
)
)
)
)
)
FROM messages
WHERE user = 'foo'

关于mysql - 实时更改MySQL中的 "status"行不同时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423758/

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