MySQL存储过程实例——实现查询数据表,有则更新无则插入

前端学数据库之数据表的插入、更新、删除数据 一、插入数据   格式:INSERT INTO 表名(字段名...)VALUES(值...);   创建环境   使用person表   CREATE TABLE person   (   id INT UNSIGNED NOT NULL AUTO_INCREMENT,   name CHAR(40) N... 阅读详情


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();-- 调用


6.MySQL数据表的数据添加、查询、修改、删除 目录 1.准备 2.添加数据 1)所有字段添加数据 2)指定字段添加数据 3)添加多条数据 3.查询数据 1)查询表中全部数据 2)查询表中部分字段数据 3)简单条件查询数据 4.修改数据 5.删除数据 1.准备 CREATE DATABASE mahaiwuji; USE mahaiwuji; CREATE TABLE goods ( id INT COMMENT ... 阅读详情

相关推荐

Sentinel--哨兵系列数据下载地址及流程更新【202310】

哨兵系列数据下载地址及流程更新。哨兵系列卫星作为哥白尼计划的一部分,主要目标便是对地球的观测任务。哥白尼计划由三部分组成:空间部分(哨兵系列太空任务与其他太空机构任务)、测量部分(提供海洋、大陆表面和大气信息的陆基和机载数据收集网络)、数据管理与全球共享。

twg666的博客 3万+

mysql做批量插入时如果存在就更新不存就插入_自学MySQL第七天

什么是store procedure,简单来说存储代码的地方。它具有方便调用,增加数据库安全性、稳定性等等优点。首先,使用CREATE PROCEDURE + 名字+括号()来创建一个存储过程(STORE PROCEDURE),使用BEGIN和END告诉MySQL起点和终点,在创建过程中需要注意的是,我们要用DELIMITER来改变默认的分隔符,这样才不会报错。如图:也就是说,将BEGIN和END...

weixin_39998795的博客 355

深入探索前端调试神器vConsole

vConsole作为一款前端调试神器,为前端开发者提供了一个便捷的调试解决方案。通过本文的介绍和示例,相信你已经对vConsole有了更深入的了解。然而,vConsole的功能远不止于此,它还有许多高级用法和技巧等待你去发掘。讨论:你在前端开发中是如何使用vConsole的?你有没有发现vConsole的一些隐藏功能或技巧?欢迎在评论区分享你的经验和见解!💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 8521

MySQL 记录存在就更新,不存在就插入

MySQL 记录存在就更新,不存在就插入MySQL 记录存在就更新,不存在就插入数据库设计sql MySQL 记录存在就更新,不存在就插入 数据库设计 CREATE TABLE `error` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id', `extend_no` varchar(64) NOT NULL COMMENT '外部编号', `error_name` varchar(64) NOT NULL COMMENT '错误名

qq_31554549的博客 329

Zemax单模光纤耦合仿真避坑指南:数值孔径、模式匹配与镀膜影响详解

本文详细解析了Zemax单模光纤耦合仿真中的关键避坑要点,包括数值孔径的多重定义与换算、模式匹配度评估及镀膜影响分析。通过实际案例和技术公式,帮助工程师避免常见仿真误差,提升激光通信和光纤传感系统的设计精度。特别针对OpticStudio用户提供了实用的参数设置建议和优化策略。

weixin_30836759的博客 464

FSL软件安装

FSL软件安装

huang_tianyuan的博客 2630

mysql“数据不存在插入,存在则更新”实现

mysql“数据不存在插入,存在则更新”实现

Willow的博客 8279

get_seed协议

【代码】get_seed协议。

a545958498的博客 911

sql语句,执行,实现没有这条数据就新增,如有这条数据就修改

原 sql语句,执行,实现没有这条数据就新增,如有这条数据就修改 ...

weixin_42447342的博客 6892

cdk&java | 分子sdf文件生成

sdf

ASKCOS博客 1089

RestFul API 详解

RESTful API 经常也被叫做 REST API,它是基于 REST 构建的 API。RESTful API 可以让你看到 URL+Http Method 就知道这个 URL 是干什么的,让你看到了 HTTP 状态码(status code)就知道请求结果如何。

wynn的博客 7581

Oracle存储过程实现同步表数据,若存在更新,不存在插入

  创建存储过程: CREATE OR REPLACE PROCEDURE "TEST_PROC"(NAME IN VARCHAR2,DM IN VARCHAR2) IS ZJ VARCHAR2(40); JH VARCHAR2(10); VERRINFO VARCHAR2(200); USER_COUNT NUMBER; B...

王绍桦 1万+

C#实现网络寻路(附完整源码)

C#实现网络寻路(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 420

初始MYSQL数据库(2)——创建、查询、更新、删除数据表的相关操作

新增(Create)、查询(Retrieve)、修改(Update)、删除(Delete)

我要学编程的博客 1807

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【MySQL】数据表插入数据

插入数据是数据库操作中最基本的操作之一,MySQL提供了多种插入数据的方式,以满足不同的使用场景和需求。

Guiat的博客 1459

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

我在广州学 Mysql 系列——插入、更新与删除数据详解以及实例

本文是有关mysql数据库的插入,更新以及删除数据命令,还有相关的练习,例如,INSERT语句,UPDATE语句和DELETE语句等!!

weixin_55767624的博客 2233

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数据库系统SSD7 实验2 《数据表查询与更新》(MySQL)

数据库系统SSD7 实验2 《数据表查询与更新》(MySQL) 一、实验目的 1、熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式,加深理解关系运算的各种操作(尤其是关系的选择,投影,连接和除运算); 2、熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用(熟悉使用UPDATE/INSERT/DELETE语句进行表操作);加深理解表的定义对数据更新的作用。 二、实验内容 (一)在表S,C,SC上完成以下查询: 1. 查询学生的基本信息; 2. 查询“CS”

Atlas 4689

【MySQL探索之旅】MySQL数据表的增删查改(初阶)

前面我们学习了MySQL数据库和数据表的创建、删除。接下来我们就需要将数据保存在数据表中。今天我们就来学习数据表的增删查改(CRUD)。CRUD即增加(Create),查询(Retrieve),更新(Update),删除(Delete)四个单词的首字母缩写。

QQ3447387928的博客 2971

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法1、replace语句:替换已有的行 replace语句是insert语句的一个变种 当添加新行时 1)如果主键值重复,那么覆盖表中已有的行 2)如果没有主键值重复,则插入该行 2、ignore insert语句可以使用ignore选项来当insert语句出现

Mark_Xu的博客 1万+

【04】MySQL数据库和数据表的基本操作详解与实例

本文详细介绍了在MySQL中进行数据库和数据表的基本操作。通过这些操作,你可以创建、修改、查询和删除数据库和数据表。掌握这些基本操作是使用MySQL进行数据库管理的基础。在实际应用中,应根据具体需求灵活运用这些命令。

qq_35320456的博客 1404

我在广州学 Mysql 系列——有关数据表的插入、更新与删除相关练习

本文有关Mysql插入(INSERT)、更新(update)与删除(delete、TRUNCATE)针对数据表格的练习详解!!⚠️MySQL中可以灵活的对数据进行插入与更新,且MySQL中对数据地操作没有任何提示,因此在更新和删除数据时,一要谨慎小心,查询条件一定要准确,避免造成数据的丢失。INSERT语句后面的列名称顺序可以不是person表定义时的顺序。即插入数据时,不需要按照表定义的顺序插入,只要保证值的顺序与列字段的顺序相同就可以!!

weixin_55767624的博客 983

MySQL插入数据重复时,数据已经存在,则更新或者忽略,不存在,则插入数据

MySQL插入数据重复时,数据已经存在,则更新或者忽略,不存在,则插入数据,使用一条SQL语句实现,这里推荐四种方法,根据业务使用最合适的,解决工作中遇到的类似问题。

分享即是最好的学习 5567

mysql 主键重复则覆盖_mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法...

个人实例:INSERT INTO w_dashboard(dashboard_name, content, createTime)VALUES("aa","cc","2018-01-11 16:58:03")ON DUPLICATE KEY UPDATE dashboard_name=VALUES(dashboard_name);或INSERT IGNORE INTO w_dashboard(da...

weixin_32158567的博客 4658

Linux下学【MySQL】表中插入和查询的进阶操作(distinct、between、in、like、where、not、NULL、order by)

本章将带你进阶的去学习表的插入insert和查找select,本质也就是学他们后面所带的一些附加条件(具体请看目录),通过这些条件去更好的插入和查找你所需要的数据。本章是上篇(全文8000字),下篇将写道修改和删除,将快速更新敬请期待吧。

溟洵的博客 3905

【MySQL】数据表行列转换

表行列转置,顾明思议,将表格中一行行的数据,采用SQL脚本转换成列数据。

花北城的博客 1万+

MySQL数据库数据的插入、更新和删除操作

MySQL数据库数据的插入、更新和删除操作一、 插入数据1. 为表的所有字段插入数据2. 为表的指定字段插入数据3. 为表同时插入多条记录4. 将查询结果插入表中二、 更新数据1. 更新一条记录2. 更新多条记录三、 删除数据2. 删除多条记录3. 删除所有记录 SQL语法预览: 为表所有字段插入数据; 【insert into 表名(字段名1,字段名2,…) values (值1,值2,…);】 为表指定字段插入数据; 【insert into 表名(指定字段名1,指定字段名2,…) values (值1

天颖 3261
上一篇: 配置mysql的环境变量的详细教程
下一篇: 单链表的基本操作一 (Java)
^^_candice
博客等级 码龄10年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值