ホームページ > データベース > mysql チュートリアル > MySQL で条件付き挿入を実行するにはどうすればよいですか?

MySQL で条件付き挿入を実行するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-26 20:41:10
オリジナル
466 人が閲覧しました

How to Perform Conditional Inserts in MySQL?

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 サイトの他の関連記事を参照してください。

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