184

これが私がやりたいことです:

現在のテーブル:

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | max         |  
|  2 | linda       |  
|  3 | sam         |  
|  4 | henry       |  
+----+-------------+  

ミステリークエリ(のようなもの"UPDATE table SET data = CONCAT(data, 'a')"

結果のテーブル:

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | maxa        |  
|  2 | lindaa      |  
|  3 | sama        |  
|  4 | henrya      |  
+----+-------------+  

それでおしまい!単一のクエリでそれを行う必要がありますが、方法を見つけることができないようです。私はbluehostでmySQLを使用しています(バージョン4.1だと思います)

みんな、ありがとう。

4

7 に答える 7

301

それはあなたが必要とするほとんどすべてです:

mysql> select * from t;
+------+-------+
| id   | data  |
+------+-------+
|    1 | max   |
|    2 | linda |
|    3 | sam   |
|    4 | henry |
+------+-------+
4 rows in set (0.02 sec)

mysql> update t set data=concat(data, 'a');
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> select * from t;
+------+--------+
| id   | data   |
+------+--------+
|    1 | maxa   |
|    2 | lindaa |
|    3 | sama   |
|    4 | henrya |
+------+--------+
4 rows in set (0.00 sec)

5.1.41でこれをテストしていますが、なぜ問題が発生するのかわかりません

于 2010-11-08T21:46:14.840 に答える
12
UPDATE 
    myTable
SET 
    col = CONCAT( col , "string" )

解決できませんでした。リクエストの構文は正しいのですが、実行すると「0 行が影響を受けました」。

解決策は次のとおりです。

UPDATE 
    myTable 
SET 
    col = CONCAT( myTable.col , "string" )

それはうまくいきました。

于 2012-09-21T10:55:36.290 に答える
11
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1

私のために働いていません。

スペアはNULLデフォルトですが、varchar

于 2012-09-23T10:12:14.433 に答える
8

解決しました。列には、受け入れる文字のセットが制限されていて、変更されたことがわかりました。これで、クエリは正常に機能します。

于 2010-11-09T03:20:09.383 に答える
2

あなたはこれを行うことができます:

Update myTable
SET spares = (SELECT CASE WHEN spares IS NULL THEN '' ELSE spares END AS spares WHERE id = 1) + 'some text'
WHERE id = 1

フィールドが null の場合、フィールド = フィールド + 値は機能しません。

于 2013-05-24T18:19:23.150 に答える