MySQL书写一个存储过程,修改指定表某个字段值如果相等就进行修改
需求:
比如有一个表,attr_name类目名称如果相同,并且attr_name_chinese类目中文名如果A条记录存在,B条记录不存在,那么就通过记录id将B与A记录,进行同步修改。
具体:
如下图表,比如记录1和记录2,类目名相同,且1有中文名,但是记录2没有中文名,所以直接通过1的中文名,将2也同步修改为1的中文名。
通过MySQL存储过程书写如下:
BEGIN #批量处理ap_categories_attr属性表中attr_name字段值如果相等,那么将attr_name_chinese为空的,同步为存在的attr_name_chinese值 #定义变量 DECLARE s1_id INT;#需要修改的记录id DECLARE s1_attr_name varchar(128) DEFAULT "";#查询的英文名条件 DECLARE s1_attr_name_chinese varchar(128) DEFAULT "";#修改的中文变量 #创建游标,并存储数据 DECLARE cur_test CURSOR FOR (SELECT id,attr_name FROM ap_categories_attr WHERE platform = "lazada" AND site_code = "MY" AND attr_name_chinese = "" LIMIT 100); #打开游标 OPEN cur_test; #执行循环 posLoop:LOOP #取游标中的值 FETCH FROM cur_test INTO s1_id,s1_attr_name; #查询数据,如果存在即修改 SELECT attr_name_chinese INTO s1_attr_name_chinese FROM ap_categories_attr WHERE attr_name = s1_attr_name AND platform = "lazada" AND site_code = "MY" AND attr_name_chinese != "" LIMIT 1; #调试输出 #SELECT s1_attr_name; #SELECT s1_attr_name_chinese; #存在即修改 IF s1_attr_name_chinese != "" THEN #调试输出 #SELECT s1_id; #修改满足条件的值 UPDATE ap_categories_attr SET attr_name_chinese = s1_attr_name_chinese WHERE id = s1_id; END IF; #结束循环 END LOOP posLoop; #释放游标 CLOSE cur_test; END
点击运行即可
-----END
影子是一个会撒谎的精灵,它在虚空中流浪和等待被发现之间;在存在与不存在之间....