ホームページ > データベース > mysql チュートリアル > 2 つの条件に基づいて MySQL 行を効率的に INSERT または UPDATE するにはどうすればよいですか?

2 つの条件に基づいて MySQL 行を効率的に INSERT または UPDATE するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-04 16:43:41
オリジナル
660 人が閲覧しました

How Can I Efficiently INSERT or UPDATE a MySQL Row Based on Two Conditions?

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

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