ホームページ >データベース >mysql チュートリアル >MySQL INSERT ステートメントでは WHERE 句が無効なのはなぜですか?また、代替手段は何ですか?
MySQL INSERT ステートメント: WHERE 句が無効な理由と適切な代替手段
紹介:
MySQL の INSERT
ステートメントは、テーブルに新しい行を追加します。 よくあるエラーは、構文的に正しくない WHERE
ステートメント内で INSERT
句を使用することです。この記事ではエラーについて説明し、効果的な代替案を提供します。
間違ったクエリと説明:
次のクエリは無効です:
<code class="language-sql">INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;</code>
これは、Users
を含む行が存在する場合にのみ、id = 1
に値を挿入しようとします。 MySQL の INSERT
ステートメントは WHERE
句をサポートしません。無条件に挿入できるように設計されています。
正しい MySQL INSERT 構文:
標準の INSERT
構文は次のとおりです:
<code class="language-sql">INSERT INTO table_name ( column1, column2, ... ) VALUES ( value1, value2, ... );</code>
WHERE
句は、SELECT
、UPDATE
、および DELETE
ステートメントでのみ使用されます。
代替アプローチ:
条件付きの挿入または更新を行うには、次のオプションを検討してください。
id
が主キーまたは一意制約の場合、単純に新しい行を挿入します:<code class="language-sql">INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);</code>
UPDATE
を使用します:<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
INSERT ... ON DUPLICATE KEY UPDATE
: これは、挿入と更新を組み合わせます。重複キーが見つかった場合 (既存の id
など)、行が更新されます。それ以外の場合は、新しい行が挿入されます:<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145;</code>
重要な考慮事項:
id
列: id
が自動インクリメントの場合は、INSERT
ステートメントから省略できます。 MySQL は自動的に値を割り当てます。INSERT ... ON DUPLICATE KEY UPDATE
構文: 上記は次のように記述することもできます:<code class="language-sql"> INSERT INTO Users SET id = 1, weight = 160, desiredWeight = 145 ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145; ``` This form is useful when updating only some columns.</code>
以上がMySQL INSERT ステートメントでは WHERE 句が無効なのはなぜですか?また、代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。