MySQL书写一个存储过程,修改指定表某个字段值如果相等就进行修改

需求:

比如有一个表,attr_name类目名称如果相同,并且attr_name_chinese类目中文名如果A条记录存在,B条记录不存在,那么就通过记录id将B与A记录,进行同步修改。

具体:

如下图表,比如记录1和记录2,类目名相同,且1有中文名,但是记录2没有中文名,所以直接通过1的中文名,将2也同步修改为1的中文名。

MySQL书写一个存储过程,修改指定表某个字段值如果相等就进行修改

通过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

点击运行即可

MySQL书写一个存储过程,修改指定表某个字段值如果相等就进行修改

Original: https://www.cnblogs.com/camg/p/16082721.html
Author: 在斑马线上散布
Title: MySQL书写一个存储过程,修改指定表某个字段值如果相等就进行修改

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/684567/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球