1. 程式人生 > 其它 >SQL根據一個表的欄位的值更新另一個表的欄位

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

此函式是多位元組安全的,並且僅當至少一個引數是二進位制字串時才區分大小寫。

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