MySQL はデータ挿入のための多用途のメカニズムを提供しており、行の重複を防ぐ条件付き挿入を実装できます。
1 つのシナリオには、instance、user、および item の列を持つ x_table という名前のテーブルが含まれます。ここで、instance は一意です。ユーザーと項目の組み合わせがまだ存在しない場合にのみ、新しい行を x_table に挿入するには、次の手順に従います。
MySQL バージョンが選択をサポートしている場合挿入中に他のテーブルからデータを取得するには、次のクエリを検討してください。
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 );
このクエリでは、dual は有効なテーブルの可用性を保証する単一行のテーブルです。一方、NOT EXISTS 条件は重複する行がないかどうかをチェックします。一致するものが見つからない場合は、新しい行が挿入されます。
また、MERGE ステートメントは、条件付き挿入のための強力なツールを提供します。その構文は次のとおりです。
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 VALUES (source.instance, source.user, source.item);
この場合、USING 句は挿入する値を指定し、ON 句は一致基準を確立します。対象テーブル (x_table) に一致する行が存在しない場合、INSERT が実行されます。
以上がMySQL にデータを挿入するときに一意の行を確保するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。