MySQL の条件付き挿入について
条件付き挿入ステートメントを使用すると、特定の条件が満たされた場合にのみテーブルに新しい行を挿入できます。 MySQL には、条件付き挿入のための専用の構文はありませんが、サブクエリや MERGE ステートメントなどの手法を使用して同じ結果を得ることができます。
サンプル シナリオ: 重複挿入の回避
列 (インスタンス、ユーザー、項目) を含む x_table というテーブルがあるシナリオを考えてみましょう。インスタンス列は一意であるため、特定のユーザーが特定のアイテムをすでに持っている場所に重複した行を挿入することは避けたいと考えています。
たとえば、行 (instance=919191、user=123、 item=456) user=123 の x_table に他の行がない場合に限り、 item=456.
サブクエリと行選択の使用
これを実現するには、サブクエリを使用して重複行の存在を確認します。
このステートメントでは、dual は行が 1 つだけある特別なテーブルです (元々は Oracle にあり、現在は MySQL でも利用可能です)。 SELECT ステートメント内のサブクエリは、値が x_table にまだ存在しない場合に限り、データの 1 行を選択します。
代替: MERGE ステートメントを使用する
MySQLバージョン 8.0 では、専用の MERGE ステートメントも導入されました。これにより、条件付きの挿入、更新、削除を 1 回で処理する便利な方法が提供されます。ステートメント:
MERGE ステートメントは、前の例と同様のサブクエリを使用して、重複行の存在を確認します。行が存在しない場合 (WHEN NOT MATCHED)、挿入操作が実行されます。
以上がMySQL で条件付き挿入を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。