2 つの条件を使用した INSERT INTO または UPDATE
問題の説明:
ユーザーが次のエラーに遭遇しました。時間のかかる課題: 特定の 2 つの行に一致する行がまだ存在しない場合、テーブルに新しい行を挿入する条件 ('name' と 'dates')、または一致が見つかった場合は既存の行を更新します。
解決策:
答えは MySQL の INSERT INTO にあります。 .. ON DUPLICATE KEY UPDATE 構文。この強力な機能により、一致する行が存在しない場合は新しい行を挿入し、一意キー制約に違反した場合は既存の行を更新することで、効率的なデータ操作が可能になります。
望ましい動作を実現するには、テーブルに一意のキーが必要です。 2 つの列 (「名前」と「日付」) に対して定義 (この場合は複合キー) します。このキーは、テーブル内の一意の行の識別子として機能します。
シナリオ例:
次のテーブル構造を考えてみましょう:
create table myThing ( id int auto_increment primary key, name int not null, values1 int not null, values2 int not null, dates date not null, unique key(name,dates) -- This line is crucial );
挿入次のステートメントを含む新しい行は、同じ行の存在に応じて、新しい行を作成するか、既存の行を更新します。 'name' と 'dates':
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
結果の例:
select * from myThing; +----+------+---------+---------+------------+ | id | name | values1 | values2 | dates | +----+------+---------+---------+------------+ | 1 | 777 | 1 | 4 | 2015-07-11 | | 2 | 778 | 1 | 1 | 2015-07-11 | +----+------+---------+---------+------------+
例が示すように、INSERT INTO ... ON DUPLICATE KEY UPDATE構文は、定義された一意のキーに基づいて挿入操作と更新操作の両方を効率的に処理し、複雑なストアド プロシージャの必要性を排除します。
以上が2 つの条件に基づいて MySQL 行を効率的に INSERT または UPDATE するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。