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

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

Mary-Kate Olsen
リリース: 2024-12-31 04:56:08
オリジナル
599 人が閲覧しました

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

2 つの条件を使用した INTO または UPDATE: 効率的な解決策

挿入または更新のタスク2 つの条件に基づいてデータベース内の行を処理することは、特に効率的なソリューションを求める場合には困難になる場合があります。この問題は、重複した名前と日付を持つ新しい行が継続的に生成されるテーブルを扱う場合に特によく発生します。

解決策: INSERT INTO ON DUPLICATE KEY UPDATE

;

この問題の最適な解決策は、INSERT INTO ON DUPLICATE です。 KEY UPDATE ステートメント。このステートメントにより、行がまだ存在しない場合は新しい行を挿入し、存在する場合は既存の行を更新できます。このステートメントを利用するには、挿入操作中に競合を検出するために、テーブルに一意のキー (複合キーなど) が必要です。

使用例

次のスキーマを持つテーブルを考えます。

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 unique key is crucial.
);
ログイン後にコピー

Withこの設定では、次のステートメントは、名前と日付の組み合わせが存在しない場合は新しい行を挿入し、存在する場合は既存の行を更新します:

INSERT INTO myThing (name, values1, values2, dates)
VALUES (777, 1, 1, '2015-07-11')
ON DUPLICATE KEY UPDATE values2=values2+1;
ログイン後にコピー

結果の例

同じ名前と日付の組み合わせでinsertステートメントを複数回実行すると、次のようにvalues2列が更新されます。以下:

| id | name | values1 | values2 | dates      |
| --- | --- | --- | --- | --- |
| 1 | 777 | 1 | 4 | 2015-07-11 |
ログイン後にコピー

結論

INSERT INTO ON DUPLICATE KEY UPDATE ステートメントは、挿入と複数の条件に基づいて更新します。このアプローチでは、一意のキーを定義することで重複エントリが適切に処理され、複雑なストアド プロシージャが不要になります。

以上が2 つの条件に基づいてデータベース行を効率的に INSERT または UPDATE するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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