• 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

    点击运行即可

  • 相关阅读:
    19. Remove Nth Node From End of List
    18. 4Sum
    16. 3Sum Closest
    15. 3Sum
    17. Letter Combinations of a Phone Number
    A Network-based End-to-End Trainable Task-oriented Dialogue System
    14. Longest Common Prefix
    36. Valid Sudoku
    29. Divide Two Integers
    32. Longest Valid Parentheses
  • 原文地址:https://www.cnblogs.com/camg/p/16082721.html
Copyright © 2020-2023  润新知