ホームページ >データベース >mysql チュートリアル >MySQL INSERT ステートメントでは WHERE 句が無効なのはなぜですか?また、代替手段は何ですか?

MySQL INSERT ステートメントでは WHERE 句が無効なのはなぜですか?また、代替手段は何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-19 06:53:08690ブラウズ

Why is a WHERE clause invalid in a MySQL INSERT statement, and what are the alternatives?

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 句は、SELECTUPDATE、および DELETE ステートメントでのみ使用されます。

代替アプローチ:

条件付きの挿入または更新を行うには、次のオプションを検討してください。

  • 一意の ID を持つ新しい行の挿入: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。