sql >> Database >  >> RDS >> Sqlserver

Sql Server 2008 MERGE - beste manier om tellingen te krijgen

U kunt een OUTPUT-clausule op uw MERGE-instructie opgeven en een uitvoerrapport krijgen van wat er tijdens MERGE is gedaan.

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'
;

Dit geeft u een rij voor elke "actie" (invoegen, bijwerken, verwijderen) voor elke bewerking. Als het veel statements zijn, kun je ook OUTPUT INTO @tableVar en dan naar de tabelvariabele kijken.

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

Bekijk de Books Online voor details over de MERGE statement en de OUTPUT-clausule .

Marc



  1. Probleem met Perzisch karakter in mysql-database

  2. lokale postgres db blijft fouten geven dubbele sleutelwaarde schendt unieke beperking

  3. Laravel - Hoe schrijf je twee inner joins met een count-statement in de Laravel-syntaxis?

  4. php mysql_connect Waarschuwing uitschakelen