0

文字列を含む列があり、バグにより一部の文字列値が間違っています。そのため、元の文字列を取得し、select からの情報を連結して文字列を修正したいと考えています。理想的には、次のようになります。

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サブクエリが 1 つの値のみを返すことが保証されている場合は、前にキーワードを単純に削除できます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 に答える