0

触れる必要のない既存の値を持つ DB テーブルがあります。SQL を次のように呼び出そうとすると、次のようになります。

私のテーブルは現在次のようになっています。

id  col1 col2
5   10   

$sql = "INSERT INTO sometable (id, col2) VALUES (5, 20) ON DUPLICATE KEY UPDATE id = 5";

挿入後、テーブルは次のようになると思います。

id  col1 col2
5   10   20

更新プログラムを使用せずにこれを達成する方法はありますか?

4

3 に答える 3

1

使用するVALUES()

INSERT INTO sometable (id, col2) VALUES (5, 20)
   ON DUPLICATE KEY UPDATE col2 = VALUES(col2);
于 2012-06-15T19:45:45.980 に答える
0

idがキーであると仮定します

これ

INSERT INTO sometable (id, col2) VALUES (5, 20) 
ON DUPLICATE KEY UPDATE id = 5

idフィールドを5(UPDATE ID =5)に更新すると言います。IDが5の場合にのみ機能し、意味がありません

あなたが欲しいのはどちらかです

INSERT INTO sometable (id, col2) VALUES (5, 20) 
ON DUPLICATE KEY UPDATE col2 = 20;

または、重複がなかった場合の値を参照する場合は、Wilkenが提案したように使用します COL2 = VALUES(COl2)

デモ

于 2012-06-15T19:58:27.103 に答える
0

良い例として、これをチェックしてください: MySQL: Insert On Duplicate

于 2012-06-15T19:53:55.810 に答える