2012-04-26 86 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。