mysql如何定时查询数据并建立新表

如题,怎么样让数据库定时每月1日查询下表a取下b、c、d并将数据另外生成一个表,表名为202106这样,

-- 启用事件调度器
SET GLOBAL event_scheduler = 1;

-- 创建任务存过
DELIMITER $$
CREATE PROCEDURE PROC_TEST1()
BEGIN
	SET @sqlstr = CONCAT(' CREATE TABLE test_',DATE_FORMAT(now(),'%Y%m') ,' AS SELECT * FROM tb1');
	PREPARE stmt1 FROM @sqlstr ;
	EXECUTE stmt1 ; 
END $$
DELIMITER ;

-- 创建每月定时任务
CREATE EVENT TEST_MONTH_JOB
ON SCHEDULE EVERY 1 MONTH 
STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 0 HOUR)
DO
CALL PROC_TEST1();

生成如下表
test_202106

 

Mysql有一个方法。就是将查询的结果生成一个表。

create table new_table_name as select * from (your_sql) as sql_table;

new_table_name 替换为创建表名
your_sql 替换为sql语句

 

至于定时生成一个表的话,这需要使用到定时任务调度器azkaban。

 

如果对你有帮助的话,请采纳一下哦,谢谢!

为啥你要借助数据库操作呢,你应该是语言的定时任务去做,比如spring quartz,等等,直接在数据库层面做的话,感觉不太好。

你可以使用脚本的形式去做,shell,linux下:

shell脚本操作mysql数据库 (部份参考) https://blog.51cto.com/devin223/1693248

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

建表属于消耗资源非常大的事情,不建议这么搞