2013-08-20 70 views
0

我正在嘗試更新一組計算機主機名以匹配最近更改的房間號。數據庫中的主機名格式爲FL-itf2106a,其中2106是舊房號。我已經在另一個表中有一個列表,在同一行上有舊的和新的房間號碼。我一直試圖從主機名的字符串中去除所有非數字字符,並將它們加入到更新表中失敗。使用連接從另一個表更新表值?

UPDATE computers c 
INNER JOIN updates u 
     ON u.old = (
        SELECT NumericOnly(c.hostname) 
        WHERE hostname 
         LIKE "%FC%" 
        ) 
     SET c.hostname = CONCAT('classf', u.new); 

NumericOnly是一個用戶函數,用於刪除字符串中的所有字符,但刪除數字。

我想設置主機名列等於classf +新的房間號碼。

回答

0

我會帶我的機會與像

UPDATE computers c 
INNER JOIN updates u 
     ON u.old = NumericOnly(c.hostname) 
     SET c.hostname = CONCAT('classf', u.new) 
    WHERE c.hostname LIKE "%FC%"; 
+0

看起來我仍然有一些學習MYSQL。這只是我正在尋找的答案。工作很好。謝謝! – user2698299