ホームページ > データベース > mysql チュートリアル > MySQL の WHERE 句で INSERT クエリが失敗するのはなぜですか?

MySQL の WHERE 句で INSERT クエリが失敗するのはなぜですか?

DDD
リリース: 2025-01-19 06:40:10
オリジナル
1013 人が閲覧しました

Why Do INSERT Queries Fail with a WHERE Clause in MySQL?

MySQL INSERT ステートメントと WHERE 句: よくある落とし穴

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>
ログイン後にコピー

これにより、値が idweightdesiredWeight に直接割り当てられ、新しいユーザー レコードが作成されます。

既存のユーザーの変更

既存のユーザーを更新することが目的の場合は、UPDATE ステートメントを使用します。

<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
ログイン後にコピー

これにより、他のエントリに影響を与えることなく、weight を持つユーザーの desiredWeightid = 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート