ホームページ > データベース > mysql チュートリアル > INSERT 操作中に複数のテーブルから出力値を取得するにはどうすればよいですか?

INSERT 操作中に複数のテーブルから出力値を取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-05 16:39:41
オリジナル
492 人が閲覧しました

How Can I Retrieve Output Values from Multiple Tables During an INSERT Operation?

挿入... 結合... 選択: 複数のテーブルからの出力値の利用

ターゲットにデータを挿入する必要があるとします。テーブルを検索し、さらに挿入操作に関係する他のテーブルから特定の情報を取得します。 OUTPUT 句は挿入されたテーブルからデータを取得するのに便利ですが、複数のテーブルから値を取得する場合には不十分です。このようなシナリオでは、MERGE ステートメントが有力な解決策として浮上します。

これを実現するには、単純な INSERT...SELECT アプローチから逸脱し、代わりに MERGE ステートメントを使用します。この変更により、OUTPUT 句内で挿入データとソース データの両方の値を利用できるようになります。

次に例を示します。

MERGE INTO Table3 USING
(
    SELECT null as col2, 
           110 as col3, 
           Table1.ID as col4, 
           Table2.Column2 as col5,
           Table2.Id as col6
    FROM Table1
    JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
    JOIN Table2 on Table1Table2Link.Column2=Table2.ID
) AS s ON 1 = 0 -- Always not matched
WHEN NOT MATCHED THEN
INSERT (Column2, Column3, Column4, Column5)
VALUES (s.col2, s.col3, s.col4, s.col5)
OUTPUT Inserted.ID, s.col6
INTO @MyTableVar (insertedId, Table2Id); 
ログイン後にコピー

この MERGE ステートメントでは、一時テーブルまたはテーブル変数が使用されます。 (@MyTableVar) は、Inserted.ID (Table3 の ID 列) と Table2.ID の両方をキャプチャするために使用されます。 ON 句の等価条件が存在しない (1 = 0) ため、すべての受信行が常に挿入とデータ取得の対象となることが保証されます。

したがって、MERGE ステートメントは効率的にデータを Table3 に挿入し、同時に @MyTableVar を設定します。挿入テーブルとソーステーブルの両方からの必要な値を使用します。これにより、挿入されたデータを他のテーブルの関連情報と組み合わせて操作できるようになり、挿入操作のユーティリティが大幅に拡張されます。

以上がINSERT 操作中に複数のテーブルから出力値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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