处理数据的时候,往往需要回溯历史,比如给用户分群后计算每个群体的用户数趋势,那么就需要计算截止到每一天的各个群体的用户数量,这个时候我们就需要创建存储过程,并且在存储过程中增加循环的功能,以此来实现上述回溯的需求。

第一步:先创建一个初始表,用于循环过程中插入数据

-- 创建表之前先判断有没有这个表存在,有的话就删掉
DROP TABLE IF EXISTS test_table;-- 创建表
CREATE TABLE `test_table` (`id` INT (11) NOT NULL AUTO_INCREMENT,`time` VARCHAR (255) DEFAULT '2021-12-22 11:22:32',PRIMARY KEY (`id`),UNIQUE KEY `time` (`time`)
) ENGINE = INNODB AUTO_INCREMENT = 11 DEFAULT CHARSET = utf8;-- 创建完先看一眼这个表
desc test_table; 

第二步:创建存储过程

-- 定义结束符为 $$
delimiter $$-- 创建存储过程之前先判断有没有这个存储过程存在,有的话就删掉,防止报错
drop procedure if exists insertdata;
create procedure insertdata( a INT)  -- 创建新的存储过程,a是参数,整数begindeclare i int default 0;  -- 变量声明i while i < a do  -- 判断条件,满足条件则执行下面的循环,不满足条件则跳过,结束循环-- 插入数据set @t = DATE_ADD(DATE('2021-12-20'), INTERVAL - i DAY); -- 从'2021-12-20'往前回溯a天INSERT INTO test_table (`id`,`time`) VALUE (i , @t) ; set i = i + 1;  -- 每执行一次循环之后 i +1 end while;      -- 结束循环end $$          -- 结束存储过程

第三步:调用循环过程

-- 调用存储过程
call insertdata(10); -- 设置a为10,也就是从固定日期往前回溯10天的数据-- 查看存储过程执行之后的数据
select * from test_table;

番外:有时候会出现报错Commands out of sync; you can't run this command now

这个报错和循环过程没有关系,这个窗口失效了,重新打开一个窗口再查询就正常了

MySQL - 创建存储过程Procedure,Do While实现循环相关推荐

  1. mysql创建存储过程及函数详解

    文章来源: 学习通http://www.bdgxy.com/ 目录 1. 存储过程 1.1. 基本语法 1.2 创建一个指定执行权限的存储过程 1.3?DELIMITER 的使用 2. 创建函数? 1 ...

  2. MySQL创建存储过程(CREATE PROCEDURE)

    MySQL 存储过程是一些 SQL 语句的集合,比如有的时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中还需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程.下面 ...

  3. 2、MySQL创建存储过程(CREATE PROCEDURE)(函数)

    MySQL 存储过程是一些 SQL 语句的集合,比如有时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程. 编写存 ...

  4. mysql 创建存储过程语法_mysql存储过程语法及实例

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程 c ...

  5. mysql创建存储过程权限问题

    首先,在mysql存储过程出现的同时,用户权限也增加了5种,其中和存储过程有关的权限有 三种: ALTER ROUTINE 编辑或删除存储过程 CREATE ROUTINE 建立存储过程 EXECUT ...

  6. MySQL——创建存储过程和函数

    简单地说,存储过程就是一条或多条  SQL  语句的集合,可视为批文件,但是其作用不仅限于批处理.存储程序可以分为存储过程和函数.存储过程要用 CALL  语句来调用,并且只能用输出变量返回值. 1. ...

  7. linux mysql 创建存储过程_linux系统下无法创建mysql存储过程问题

    创建存储过程的完整命令: CREATE PROCEDURE pro1() begin declare b int default 0; end; mysql中运行存储过程创建语句错误结果: root@ ...

  8. mysql创建存储过程及遍历查询结果,mysql 用存储过程遍历结果集

    mysql 用存储过程遍历结果集 mysql (业务场景:取A表中数据插入B表中) 使用存储过程 以下面两步:sql --建立存储过程优化 DROP PROCEDURE IF EXISTS `proc ...

  9. mysql 创建 存储过程 与执行存储过程 每天零凌晨一点定时执行

    -- 创建存储过程 DELIMITER $ --声明存储过程的结束符 CREATE PROCEDURE Up_bookinfo() --存储过程名称(参数列表) BEGIN --开始DELETE fr ...

最新文章

  1. python中newfile是干嘛用的_python 文件操作方法
  2. Python Django 查询数据缓存
  3. 网站设计大访问量应用的解决方案
  4. 技术有温,代码有爱——1024技术公益信息无障碍
  5. java merge json出错删除相同的json
  6. Equipment upload - ERP ACK
  7. 前端学习(1042):todoList存储
  8. 51单片机蜂鸣器演奏《小苹果》C语言程序,51单片机C语言蜂鸣器发声生日快乐播放程序...
  9. Android开发笔记(一百一十四)发布工具
  10. 传奇服务器维护活力值怎么算,电竞传奇活力值怎么补满 电竞传奇快速恢复方法...
  11. 车标识别 深度学习车标识别 神经网络车标识别 cnn车标识别 目标检测 yolo识别
  12. html5获取经纬度失败,h5获取经纬度有问题
  13. onenote 无法正常使用的解决办法
  14. 台式计算机没有声音图标,台式电脑没声音,小扬声器图标也没有。
  15. 服务器cpu型号各个数字,服务器cpu型号 数字
  16. 利用SSRF攻击Redis
  17. 阿里云大数据助理工程师ACA认证最新笔记(2021)
  18. Hadoop垃圾回收站与YARN日志聚合
  19. oracle分区表优点
  20. php做扫描功能,phpscanphp后门扫描神器

热门文章

  1. 【Flask模板】include标签
  2. docker发布spring cloud应用
  3. HighCharts解析之xAxis——x轴的样式
  4. .net连接MYSQL数据库方法一
  5. GARFIELD@01-19-2005
  6. 输入一个数3256,将他从小到大输出,就是2356
  7. 4岁小女孩给Linux内核贡献提交
  8. div为空的时候 浮动没有效果_3种CSS清除浮动的方法
  9. pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)
  10. oracle基本的查询语句,Oracle基本查询语句