MySQL存储过程实例——实现查询数据表,有则更新无则插入
来源:互联网 发布:人工智能的主要技术 编辑:程序博客网 时间:2024/05/27 20:16
delimiter //
CREATE PROCEDURE getMax_pro()BEGIN
DECLARE v_rtuid VARCHAR(11);
DECLARE v_datatime VARCHAR(30);
DECLARE v_ai1 VARCHAR(10);
DECLARE v_ai2 VARCHAR(10);
DECLARE v_ai3 VARCHAR(10);
DECLARE v_ai4 VARCHAR(10);
DECLARE v_ai5 VARCHAR(10);
DECLARE v_ai6 VARCHAR(10);
DECLARE v_ai7 VARCHAR(10);
DECLARE v_ai8 VARCHAR(10);
DECLARE v_di1 VARCHAR(10);
DECLARE v_di2 VARCHAR(10);
DECLARE v_di3 VARCHAR(10);
DECLARE v_di4 VARCHAR(10);
DECLARE v_di5 VARCHAR(10);
DECLARE v_di6 VARCHAR(10);
DECLARE v_di7 VARCHAR(10);
DECLARE v_di8 VARCHAR(10);
DECLARE done INT DEFAULT FALSE; -- 该语句要在光标的定义之前,不然报错
DECLARE cur CURSOR FOR select rtuid,DATE_FORMAT(datatime,'%Y-%m-%d'),MAX(ai1),MAX(ai2),MAX(ai3),MAX(ai4),MAX(ai5),MAX(ai6),MAX(ai7),
MAX(ai8),MAX(di1),MAX(di2),MAX(di3),MAX(di4),MAX(di5),MAX(di6),MAX(di7),MAX(di8)
from tb_rtudata
where datatime BETWEEN CONCAT(DATE_FORMAT(NOW(),'%Y-%m-%d'),' 00:00:00') AND NOW()
GROUP BY rtuid;-- 查询当天0点到当前时间的最大值
DECLARE CONTINUE HANDLER FOR NOT FOUND set done=TRUE; -- 该语句须在光标的定义之后,不然报错
OPEN cur;
read_loop:LOOP
FETCH cur INTO v_rtuid,v_datatime,v_ai1,v_ai2,v_ai3,v_ai4,v_ai5,v_ai6,v_ai7,v_ai8,v_di1,v_di2,v_di3,v_di4,v_di5,v_di6,v_di7,v_di8;
IF done THEN -- 遍历结束离开循环
leave read_loop;
END IF;
-- 业务: 实现有则更新,无则插入
IF EXISTS (select * from tb_rtudata_max where tb_rtudata_max.rtuid=v_rtuid and tb_rtudata_max.datatime=v_datatime) THEN
update tb_rtudata_max set tb_rtudata_max.ai1=v_ai1,tb_rtudata_max.ai2=v_ai2,tb_rtudata_max.ai3=v_ai3,tb_rtudata_max.ai4=v_ai4,
tb_rtudata_max.ai5=v_ai5,tb_rtudata_max.ai6=v_ai6,tb_rtudata_max.ai7=v_ai7,tb_rtudata_max.ai8=v_ai8,
tb_rtudata_max.di1=v_di1,tb_rtudata_max.di2=v_di2,tb_rtudata_max.di3=v_di3,tb_rtudata_max.di4=v_di4,
tb_rtudata_max.di5=v_di5,tb_rtudata_max.di6=v_di6,tb_rtudata_max.di7=v_di7,tb_rtudata_max.di8=v_di8
where tb_rtudata_max.rtuid=v_rtuid and tb_rtudata_max.datatime=v_datatime;
ELSE
insert INTO tb_rtudata_max(rtuid,datatime,ai1,ai2,ai3,ai4,ai5,ai6,ai7,ai8,di1,di2,di3,di4,di5,di6,di7,di8)
VALUES(v_rtuid,v_datatime,v_ai1,v_ai2,v_ai3,v_ai4,v_ai5,v_ai6,v_ai7,v_ai8,v_di1,v_di2,v_di3,v_di4,v_di5,v_di6,v_di7,v_di8);
end if;
end LOOP;
-- select * from tb_rtudata_max;
END;
//
CALL getMax_pro();-- 调用
阅读全文
0 0
- MySQL存储过程实例——实现查询数据表,有则更新无则插入
- mysql 有则更新无则插入
- 存储过程实现mysql批量插入实例
- SQL 利用存储过程实现对表数据有则更新无则添加
- SQL server 实现有则更新,无则插入
- 批量更新操作,有则更新无则插入。
- 存储过程实现插入更新数据
- MYSQL 查询包含某个数据表的所有存储过程
- mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法
- repeater插入,多选删除,条件查询实例(存储过程实现)
- 存储过程--插入--查询
- MySQL存储过程实现批量插入数据
- mysql存储过程实现动态插入数据
- oracle实现 无则insert插入,有则update更新,一条语句直接进行insert/update操作
- mysql一条sql实现没有数据就插入数据有数据则更新数据
- Mybatis 动态SQL批量插入(有则更新无则插入)
- JDBC基于MVC架构项目实例-实现对MySQL数据表的增删改查、调用数据表中的存储过程和函数
- MySQL存储过程实现更新UUID
- python 最大公约数与最小公倍数
- Android 手机号,密码正则验证
- apache对目录和地址的安全权限控制
- 用Java进行动态公式处理
- maven打包时去除不需要的jar包策略
- MySQL存储过程实例——实现查询数据表,有则更新无则插入
- IT连创业系列:说说苹果商店AppStore上架App应用前后遇到的那些神坑
- 11月第一次考试0
- 记录自学Web前端
- C++PrimerV5/Ch10/ex10.1-
- htttp 请求方式get 和post的区别
- springboot如何测试打包部署
- oracle select非group by的字段
- CAN学习笔记二——瑞萨说明书(待更改)