gpt4 book ai didi

mysql - 更新查询以每月重置表字段

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:12 24 4
gpt4 key购买 nike

我有一个名为 service_tracker 的表。该表包含 6 个字段,但与我下面的问题最相关的是 cycle_startlast_used。目前,我能够确定有关服务的以下内容:用户在1个月内使用它的次数(usage_count)(last_used,cycle_start).第一个查询将 1 添加到 usage_count,只要它不早于 1 个月。如果超过 1 个月,第二个查询将清除并设置 usage_count = 1。查询效果很好,但是,是否可以根据一年中的十二个月来执行查询?在四月、五月、六月等结束后清除 usage_count 并将其设置为 1?

查询:

UPDATE service_tracker
SET usage_count = usage_count + 1,
last_used = CURDATE()
WHERE service_tracker = 'cloudstorage' AND `user` = 'test2' AND last_used >= date_sub(CURDATE(), INTERVAL 1 month);
UPDATE service_tracker
SET usage_count = 1,
last_used = '0000-00-00',
cycle_start = CURDATE()
WHERE service_tracker = 'cloudstorage' AND `user` = 'test2' AND cycle_start < date_sub(CURDATE(), interval 1 month);

表架构

CREATE TABLE IF NOT EXISTS `service_tracker` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`service` varchar(50) NOT NULL,
`cycle_start` date NOT NULL,
`user` varchar(200) NOT NULL,
`usage_count` int(6) NOT NULL,
`last_used` date NOT NULL,
PRIMARY KEY (`id`)
);

INSERT INTO `service_tracker` (`id`, `service`, `cycle_start`, `user`, `usage_count`, `last_used`) VALUES
(1, 'webserver', '2015-04-24', 'test1', 13, '2015-04-24'),
(2, 'cloudstorage', '2015-04-16', 'test2', 390, '2015-04-30'),
(3, 'web-traffic-tracker', '2015-04-16', 'test3', 1916, '2015-04-30'),
(4, 'remote-it-help', '2015-04-16', 'test4', 91, '2015-04-16');

最佳答案

您可以使用 mysql 调度程序在特定(和重复)时间运行查询。

DELIMITER $$
CREATE EVENT reset_usage_count
ON SCHEDULE EVERY '1' MONTH
STARTS '2015-05-01 00:00:00'
DO
BEGIN
-- your query to reset the usage_count
END$$
DELIMITER ;

这个会在每个月的第一天午夜开始查询。您需要确保全局变量 event_scheduler 设置为 on。您可以通过执行 show proceslist 并查找 User: event_scheduler

来检查它是否正在运行

关于mysql - 更新查询以每月重置表字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29960870/

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