如何解决我试图自动化一个SQL查询以在每月的每一天运行,而循环不起作用查询给出错误1064
我有一个查询需要在每月的每一天运行,有没有一种方法可以运行一个查询,这样我就不必在每次运行时都更改查询中的日期。我尝试使用While循环,但没有给出任何答案。当我运行下面的代码时,它显示错误1064
set @StartDate1 = '2020-07-01';
set @EndDate = '2020-07-30';
WHILE (@StartDate1 < @EndDate) DO
SELECT COUNT(id ),json_extract(data,'$.metadata.referred')
FROM modulusDb mdb
where json_extract(data,'$.event') = 'install' and json_extract(data,'$.metadata.referred') = TRUE
and created_at >= @StartDate1 and created_at < DATEADD(day,1,@StartDate1)
SET @StartDate1 = DATEADD(day,@StartDate1)
END WHILE
解决方法
您必须在过程或函数中执行此操作 每个命令必须有分号;最后
另外的DATEADD在mysql中不存在,或者您有一个具有该名称的函数
CREATE TABLE modulusDb(id INT,data JSON,created_at DATE);
DROP procedure IF EXISTS `dowhile`;
DELIMITER $$
CREATE PROCEDURE `dowhile`()
BEGIN
set @StartDate1 = '2020-07-01';
set @EndDate = '2020-07-30';
WHILE (@StartDate1 < @EndDate) DO
SELECT COUNT(id ),json_extract(data,'$.metadata.referred')
FROM modulusDb mdb
where json_extract(data,'$.event') = 'install' and json_extract(data,'$.metadata.referred') = TRUE
and created_at >= @StartDate1 and created_at < DATE_ADD(@StartDate1,INTERVAL 1 DAY);
SET @StartDate1 = DATE_ADD(@StartDate1,INTERVAL 1 DAY);
END WHILE;
END$$
DELIMITER ;
MySQL不喜欢您的select.statement,它没有语法错误,但这是incompatible with sql_mode=only_full_group_by
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。