mysql 批量对数据进行更新(不同表)已有就更新没有就插入

本文介绍了一个MySQL存储过程,用于将`t_hj_test`表的数据更新到`student`表中。如果`student`表中已存在记录,则进行更新;若不存在,则插入新记录。存储过程首先删除已存在的同名存储过程,然后创建新的存储过程,通过游标遍历`t_hj_test`表,使用`REPLACE INTO`语句实现数据的动态更新和插入。
摘要由CSDN通过智能技术生成

– 需求:想把t_hj_test表的数据更新到student表数据,已有就更新没有就插入

sno 学号
– sname 姓名
– ssex 性别
– 存储过程存在就删掉
DROP PROCEDURE IF EXISTS set_value;
DELIMITER //
CREATE PROCEDURE set_value()
BEGIN

– 定义变量
DECLARE emp_sno VARCHAR(25) DEFAULT ‘0’;
DECLARE emp_sname VARCHAR(25) DEFAULT ‘0’;
DECLARE emp_ssex VARCHAR(25) DEFAULT ‘0’;

– //该变量用于标识是否还有数据需遍历
DECLARE flag INT DEFAULT 0;
– 定义游标
DECLARE emp_cursor CURSOR FOR select sno,sname,ssex from t_hj_test;
– //查询是否有下一个数据,没有将标识设为1配合flag变量 ,相当于hasNext
DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1;
– 打开游标
open emp_cursor;
– 使用while循环遍历游标
while flag != 1 Do
– 使用 fetch 游标名 into 变量1,变量2,变量3 把每行的数据赋予变量
fetch emp_cursor into emp_sno,emp_sname,emp_ssex;
– 使用 replace into 目标表(目标字段1,…,…) values(变量1,…,…)
replace into student(sno,sname,ssex) values(emp_sno,emp_sname,emp_ssex);
END WHILE;

– 关闭游标
close emp_cursor;
END //
DELIMITER ;

– 调用存储过程
CALL set_value( );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值