mysql - 创建一个基于日期的循环 Mysql

标签 mysql loops

我有一个问题:

insert into fookoo_business
select stat_date, sum(spend), sum(revenue)
from hooloo_business;

我想为从“2017-01-20”到昨天的每个日期运行(这意味着如果我们在 01/04/2018 时查询将运行 434 次),分别为每个日期运行 (在一个循环中)。

我如何在 Mysql 中创建一个循环来为我做这件事?

我试过:

为查询创建程序select @stat_date, sum(spend), sum(revenue) 我叫“查询”

然后:

CREATE PROCEDURE loop_procedure()

BEGIN

SET @stat_date='2018-03-20';

CALL 'query';

REPEAT
  SET @stat_date = @stat_date + INTERVAL 1 DAY;
UNTIL @stat_date = CURDATE() END REPEAT;



END

最佳答案

最终我在存储过程中使用了以下逻辑来获取数据:

PROCEDURE `x_monitoring_loop`()
BEGIN

 DECLARE i INT;
 DECLARE len INT;
 SET len = 434;
 SET i = 0;
 WHILE (i < len) DO
 SET @stat_date= CURDATE()-INTERVAL 1 DAY;
 SET @stat_date= @stat_date- INTERVAL i DAY; 

 Insert query;

 SET i = i +1;
 END WHILE;

这样查询每天运行 434 次,从当前日期开始 - 1 天。

关于mysql - 创建一个基于日期的循环 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49598972/

相关文章:

MySQL - 在 SQL 过程中使用 foreach 排序

循环中的 C++ istringstream 不改变它的值

Java While 循环以负数中断

sql - 使用触发器检查 VARCHAR2 是否仅包含字母

php - Laravel 中的模式表动态添加列

C# MySQL参数化查询问题

c++ - 如果在循环内声明了一个指针变量,它是否与循环的每次传递都与相同的内存地址相关联?

javascript - 如何使用 jQuery 将 div 添加到数组,然后使用循环和 fadeOut 方法

MySQL 外键错误 1005 errno 150 主键作为外键

mysql - 引用多个表的外键 - 使用多个 FK