MySQL INSERT ステートメント内で WHERE 句を使用すると、エラーが発生します。 これは、WHERE 句が INSERT ではなく UPDATE および DELETE 操作専用に設計されているためです。
提供されたクエリは、新しいユーザーを追加するか、既存のユーザーを変更することを目的としている可能性があります。両方のシナリオを明確にしましょう:
ID 1 の新しいユーザーを挿入するための正しい MySQL 構文は次のとおりです。
<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES (1, 160, 145);</code>
これにより、値が id
、weight
、desiredWeight
に直接割り当てられ、新しいユーザー レコードが作成されます。
既存のユーザーを更新することが目的の場合は、UPDATE ステートメントを使用します。
<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
これにより、他のエントリに影響を与えることなく、weight
を持つユーザーの desiredWeight
と id = 1
が変更されます。
レコードの存在に基づいて挿入と更新の両方を処理するには、次の代替案を検討してください。
INSERT ... ON DUPLICATE KEY UPDATE
:<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES (1, 160, 145) ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145;</code>
これにより、キーが存在しない場合は新しい行が挿入されます。それ以外の場合は、既存の行が更新されます。
INSERT ... SET
: (機能的には上記の VALUES メソッドと似ていますが、この構文はわかりやすくするためにあまり好まれないことがよくあります)覚えておいてください: id
が自動インクリメント列の場合は、INSERT ステートメントから省略できます。 MySQL は一意の ID を自動的に生成します。
以上がMySQL の WHERE 句で INSERT クエリが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。