2012-04-26 90 views
0

我有一個字符串在其中的列,並且由於錯誤,某些字符串值是錯誤的。所以我想通過採用原始字符串並將select中的信息連接到它來修復字符串。理想情況下是這樣的:MySQL:更新與結果連接的列

UPDATE table as t 
SET t.string = SELECT CONCAT(t.string, 
          (SELECT fix FROM othertable where id=t.id) 
          ); 

但當然,我不能這樣做,使用concat。 我不得不說,我沒有任何其他方法很遠。
任何人有想法?

回答

1

如果子查詢是保證只返回一個值,你可以簡單地CONCAT之前刪除SELECT關鍵字:

UPDATE table as t 
SET t.string = CONCAT(t.string, 
         (SELECT fix FROM othertable where id=t.id) 
        ); 

如果子查詢可能會比一個返回值更,速戰速決,可能是申請GROUP_CONCAT像這樣:

UPDATE table as t 
SET t.string = CONCAT(t.string, 
         (SELECT GROUP_CONCAT(fix) FROM othertable where id=t.id) 
        ); 
+0

非常好,謝謝這工作的一種享受。 – mark 2012-05-08 15:20:14

0

嘗試以下:

UPDATE 
table as t 

INNER JOIN 
othertable as o 

ON 
t.id = o.id 

SET 
t.string = CONCAT(t.string, o.fix) 

注意,在MySQL(如上),這有點不同於MSSQL不使用關鍵字FROM。