0

0

mysql 存储过程中使用了游标和临时表,返回的临时表数据不准确

php中文网

php中文网

发布时间:2016-06-06 09:41:14

|

1410人浏览过

|

来源于php中文网

原创

mysql游标存储过程数据库临时表

delimiter $$

USE laolao$$

DROP PROCEDURE IF EXISTS parent_sport_sort1$$

CREATE DEFINER=root@% PROCEDURE parent_sport_sort1(IN jidb VARCHAR(64),IN uname VARCHAR(64),IN starttime VARCHAR(64),IN endtime VARCHAR(64),
IN startmonth VARCHAR(64),IN endmonth VARCHAR(64),IN startday VARCHAR(64),
OUT totala INT,OUT ranking INT,OUT totalamonth INT,OUT rankmonth INT,OUT totaladay INT,OUT rankday INT,OUT usname VARCHAR(64))
BEGIN
DECLARE usname VARCHAR(64);

万彩商图
万彩商图

专为电商打造的AI商拍工具,快速生成多样化的高质量商品图和模特图,助力商家节省成本,解决素材生产难、产图速度慢、场地设备拍摄等问题。

下载
DECLARE done INT DEFAULT FALSE;                创建游标DECLARE cur_usname CURSOR FOR SELECT parentname FROM user_chilld  WHERE childname=uname;DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;创建临时表  CREATE TEMPORARY TABLE IF NOT EXISTS tmp_sportdata(    totala INT(11),    ranking INT(11),    totalamonth INT(11),    rankmonth INT(11),    totaladay INT(11),    rankday INT(11),    usname VARCHAR(64));OPEN cur_usname;read_loop: LOOPFETCH cur_usname INTO usname;IF done THEN    LEAVE read_loop;END IF; SET @mytemp = 0; SELECT newid,stotal,usname INTO ranking,totala,usname FROM(    SELECT (@mytemp:=@mytemp+1) AS newid,stotal,username FROM (        SELECT  SUM(total) stotal, username FROM exercise             WHERE ( username                 IN(                    SELECT username FROM ofRoster                         WHERE jid=CONCAT(usname,jidb)                         OR username =usname)             AND createtime BETWEEN starttime AND endtime              )GROUP BY username ORDER BY stotal DESC         )a    ) a1  WHERE username=usname;SET @mytemp = 0;SELECT newid,stotal INTO rankmonth,totalamonth FROM(    SELECT (@mytemp:=@mytemp+1) AS newid,stotal,username FROM (        SELECT  SUM(total) stotal, username FROM exercise             WHERE ( username                 IN(                    SELECT username FROM ofRoster                         WHERE jid=CONCAT(usname,jidb)                         OR username =usname)             AND createtime BETWEEN startmonth AND endmonth              )GROUP BY username ORDER BY stotal DESC         )a    ) a1  WHERE username=usname;SET @mytemp = 0;SELECT newid,stotal INTO rankday,totaladay FROM(    SELECT (@mytemp:=@mytemp+1) AS newid,stotal,username FROM (        SELECT  SUM(total) stotal, username FROM exercise             WHERE ( username                 IN(                    SELECT username FROM ofRoster                         WHERE jid=CONCAT(usname,jidb)                         OR username =usname)             AND createtime BETWEEN startday AND startday              )GROUP BY username ORDER BY stotal DESC         )a    ) a1  WHERE username=usname;    INSERT INTO tmp_sportdata VALUES(totala,ranking,totalamonth,rankmonth,totaladay,rankday,usname);    END LOOP;    CLOSE cur_usname;    SELECT * FROM tmp_sportdata;    DROP TABLE IF EXISTS tmp_sportdata;END$$

DELIMITER ;

需求是这样的
一个儿女账号,绑定多个老人账号,然后一个儿女要查出绑定所有老人的每月的运动数据,每天的运动数据,当天的运动数据。其中运动数据中包括老人在好友中的排名,和运动步数

现在上面的存储过程基本上已经完成了这个功能,但是出现了bug,就是如果儿女绑定了两个老人,其中一个老人在今天没数据,另一个老人有数据的话,这个存储过程执行之后返回只有1条数据,如果两个老人在今天都有数据,就显示正常

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
布尔教育燕十八mysql高级视频教程
布尔教育燕十八mysql高级视频教程

共24课时 | 7.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号