MySQL での条件付き挿入の実現
MySQL では、この目的専用の特定のキーワードがないため、条件付き挿入は困難な場合があります。したがって、代替アプローチを採用する必要があります。
サブクエリを使用したアプローチ:
効果的な解決策の 1 つは、サブクエリを使用して、一致基準を持つ既存の行を確認することです。次のクエリは、同じユーザー値と項目値を持つ行が存在しない場合にのみ、x_table に新しい行を挿入します。
INSERT INTO x_table(instance, user, item) SELECT 919191, 123, 456 FROM dual WHERE NOT EXISTS (SELECT * FROM x_table WHERE user = 123 AND item = 456);
サブクエリにより、条件が満たされた場合にのみ INSERT ステートメントが実行されます。 Dual は、SELECT ステートメントの便利なソースを提供する単一行のテーブルです。
MERGE を使用した代替アプローチ:
条件付き挿入の別のオプションは、MERGE を使用することです。声明。 MERGE ステートメントを使用すると、1 回の操作で挿入と更新の両方を行うことができます。次のクエリは、新しい行が x_table に存在しない場合は挿入し、存在しない場合は既存の行を更新します。
MERGE INTO x_table AS target USING ( SELECT 919191 AS instance, 123 AS user, 456 AS item ) AS source ON target.user = source.user AND target.item = source.item WHEN NOT MATCHED THEN INSERT (instance, user, item) VALUES (source.instance, source.user, source.item) WHEN MATCHED THEN UPDATE SET instance = source.instance;
このアプローチでは、MERGE ステートメントは最初に、一致する既存の行を確認します。ユーザーとアイテムの値。一致するものが見つからない場合は、ソース サブクエリのデータを使用して新しい行が挿入されます。一致するものが見つかった場合、インスタンス値が更新されます。
以上がMySQL で条件付き挿入を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。