1. 程式人生 > 其它 >MySQL書寫一個儲存過程,修改指定表某個欄位值如果相等就進行修改

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

點選執行即可