sql >> データベース >  >> RDS >> Sqlserver

Sql Server 2008 MERGE - カウントを取得する最良の方法

    MERGE ステートメントで OUTPUT 句を指定すると、MERGE 中に実行された内容の出力レポートを取得できます。

    MERGE (targetTable) AS t 
    USING (sourceTable) AS s
    ON t.ID = s.ID
    WHEN MATCHED THEN
      (some statements)
    WHEN NOT MATCHED THEN
      (some statements)
    OUTPUT
      $action, inserted.ID 'inserted', deleted.ID 'deleted'
    ;
      

    これにより、各操作の各「アクション」(挿入、更新、削除) の行が得られます。ステートメントが多い場合は、@tableVar に OUTPUT INTO してから、テーブル変数を確認することもできます。

    DECLARE @tableVar TABLE (MergeAction VARCHAR(20), InsertedID INT, DeletedID INT)
    
    MERGE (targetTable) AS t 
    USING (sourceTable) AS s
    ON t.ID = s.ID
    WHEN MATCHED THEN
          (some statements)
    WHEN NOT MATCHED THEN
          (some statements)
    OUTPUT
          $action, inserted.ID 'inserted', deleted.ID 'deleted' INTO @tableVar
    ;
    
    SELECT MergeAction, COUNT(*) 
    FROM @tableVar  
    GROUP BY MergeAction
      

    MERGE の詳細については、Books Online をご覧ください。 ステートメントと OUTPUT 句 .

    マーク



    1. MySQLをUbuntuにデプロイして完全に管理する方法

    2. どちらがより効率的ですか:複数のMySQLテーブルまたは1つの大きなテーブル?

    3. データベースに多くの言語を話せるようにするにはどうすればよいですか?

    4. unaccent()はPostgresでのインデックスの使用を防ぎます