gpt4 book ai didi

mysql - mysql存储过程得到错误结果

转载 作者:行者123 更新时间:2023-11-29 19:11:41 24 4
gpt4 key购买 nike

我正在尝试使用 SP 获取每个日期的结果,并且我正在使用循环并使用 union all 附加 sql 语句,但它正在获取变量日期的最后一个值。

表:

CREATE TABLE `bugs` (
`id` int(11) DEFAULT NULL,
`severity` int(11) DEFAULT NULL,
`open_date` date DEFAULT NULL,
`close_date` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SP:

DELIMITER $$
DROP PROCEDURE IF EXISTS search$$
CREATE PROCEDURE search(startDate DATE, endDate DATE)
BEGIN
DECLARE result VARCHAR(255);
SET @iterDate = DATE(startDate);
SET @result = '';
label1: LOOP
SET @result = CONCAT(@result, ' SELECT DATE(@iterDate), count(*) FROM bugs WHERE open_date = DATE(@iterDate) AND close_date > DATE(@iterDate) UNION ALL');
SET @iterDate = DATE_ADD(@iterDate, INTERVAL 1 DAY);
IF @iterDate <= DATE(endDate) THEN
ITERATE label1;
END IF;
LEAVE label1;
END LOOP label1;
SET @result = LEFT(@result, LENGTH(@result)-LENGTH('UNION ALL'));
PREPARE stmt FROM @result;
EXECUTE stmt;
END$$
DELIMITER ;

这将获取日期范围并记录每个日期的计数。在我的例子中,它使用最后一个日期(endDate+1)来执行最后形成的查询。

最佳答案

只需更改@iterDate递增(SET命令)和@iterDate条件检查(IF命令)的顺序即可。

关于mysql - mysql存储过程得到错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43029439/

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