MySQL存储过程,遍历多个表,从n多个有规律的表中查找某条数据的出现次数

MySQL存储过程,遍历多个表,从n多个有规律的表中查找某条数据的出现次数

create PROCEDURE test()
BEGIN
#统计某一个数据出现的次数
#先定义,再赋值
#定义数量
declare num int default 0;
#定义遍历值
declare i int default 0;

declare tmp varchar(128) default "";

declare mychar varchar(128) default "要查询的内容";

#对我想要的这个字符串进行次数统计
declare mychar_count int default 0;

DECLARE finished INTEGER DEFAULT 0;

#开始定义游标
declare cursor_name cursor for select table_name from information_schema.tables where
table_name>CONCAT("bill",DATE_FORMAT(now()- INTERVAL '7' day,"%Y%m%d"))
and table_name<=CONCAT("bill",DATE_FORMAT(now(),"%Y%m%d"))
and table_name like "bill%";

DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;

#赋值数量
select count(table_name) into num from information_schema.tables where
table_name>CONCAT("bill",DATE_FORMAT(now()- INTERVAL '7' day,"%Y%m%d"))
and table_name<=CONCAT("bill",DATE_FORMAT(now(),"%Y%m%d"))
and table_name like "bill%";

#打开游标
open cursor_name;

while i < num do

					#接收游标当前的内容
					FETCH cursor_name INTO tmp; 
					#拼接的时候注意两边添加空格
				    set @mysql=concat("select COUNT(caller) into  @mychar_one "," from ",`tmp`," where caller= ",`mychar`,";");
					PREPARE stmt from @mysql;
        	        EXECUTE stmt;
					deallocate prepare stmt;
					set mychar_count=mychar_count + @mychar_one;
					#给i加值
       		        set i = i + 1;    
end while;
#关闭游标
CLOSE cursor_name;
select mychar_count;
END

参考链接:
/https://cloud.tencent.com/developer/article/1549687/
/https://bbs.csdn.net/topics/392137684/

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

aptx_绝境长城

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值