0

我有一列包含一个字符串,并且由于错误,一些字符串值是错误的。所以我想通过获取原始字符串并将选择中的信息连接到它来修复字符串。理想情况下,它会是这样的:

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

但当然,我不能使用concat. 我不得不说我没有用任何其他方法走得很远。
有人有想法吗?

4

2 回答 2

1

如果保证子查询只返回一个值,您可以简单地删除SELECT关键字 before CONCAT

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)
                     );
于 2012-04-26T11:22:53.547 回答
0

试试下面的:

UPDATE
table as t

INNER JOIN 
othertable as o

ON
t.id = o.id

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

请注意,在 MySQL(如上)中,它与不使用关键字 FROM 的 MSSQL 有点不同。

于 2012-04-26T10:28:37.753 回答