1. ホーム
  2. sql

[解決済み] MySQLのInsertクエリがWHERE句で動作しない

2022-03-09 15:21:50

質問

このクエリのどこが問題なのでしょうか。

INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;

がなくても動作します。 WHERE 節があります。SQLを忘れていたようです。

どうすればいいですか?

MySQL INSERT構文 はWHERE句をサポートしていないので、このままではクエリーは失敗します。仮にあなたの id カラムが一意であるか、主キーであること。

ID 1 の新しい行を挿入しようとしている場合は、次のようにします。

INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);

ID 1 の既存の行の weight/desiredWeight 値を変更しようとしている場合、次のようにします。

UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;

必要であれば、INSERT ... ON DUPLICATE KEY構文を次のように使用することもできます。

INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145

とか、こんな感じでも。

INSERT INTO Users SET id=1, weight=160, desiredWeight=145 ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145

また、注意点として、もしあなたが id カラムがオートインクリメントカラムの場合は、INSERT からカラムを省略し、mysql に通常通りインクリメントさせたほうがよいでしょう。