SQL根據一個表的字段的值更新另一個表的字段


SQL根據一個表的字段的值更新另一個表的字段

UPDATE table_1 t1 left join table_2 t2 on t2.id = t1.tid SET t1.username = t2.uname  
where t1.id>5;

參考的例子如上,基於參考例子自己實踐運用如下:
本人實際案例把t1表的省市區中文名稱替換為代碼
t2表為省市區字典表
在這里插入圖片描述
在這里插入圖片描述

UPDATE t_yangtze_controls t1
left join t_sys_area t2 on  t1.county = t2.`NAME` SET t1.county = t2.AREA_ID
WHERE INSTR(t1.`county`,t2.`name`)>0  #這個條件是為了防止不匹配的變為null
# 模糊匹配 PS:待轉換為 '格爾木' 省市區表為'格爾木市'
UPDATE t_yangtze_pollution_ewp t1
    LEFT JOIN t_sys_area t2
    ON t2.`NAME` LIKE CONCAT(t1.county, '%' ) SET t1.county = t2.AREA_ID
WHERE INSTR(t2.`name`,t1.`county`)>0;

INSTR(str,substr)

 返回substrstring 中 第一次出現 substring 的位置 str。這與 的雙參數形式相同LOCATE(),只是參數的順序顛倒了。
mysql> SELECT INSTR('foobarbar', 'bar');
-> 4
mysql> SELECT INSTR('xbar', 'foobar');
-> 0

此函數是多字節安全的,並且僅當至少一個參數是二進制字符串時才區分大小寫。

單張表自聯,多表關聯更新都可以。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM