voglio per creare una stampa che metterà a confronto due tabelle e inserire i valori non corrispondenti in un'altra terza tabella o tabella delle variabili qualcosa di simile:SQL Merge con l'inserimento nell'altro tavolo
MERGE Assets AS target
USING (@id, @name)FROM Sales AS source (id, name) ON (target.id = SOURCE.id)
WHEN MATCHED THEN
UPDATE SET target.Status = @status, target.DateModified = SYSUTCDATETIME()
WHEN NOT MATCHED THEN
INSERT INTO @tableVar (id, name, status, dateModified)
VALUES (@id, @name, @status, SYSUTCDATETIME())
VUOI ragazzi aiutare me per trasformarlo usando altri costrutti.
Esiste un'alternativa a "NOT IN" in questo caso? Qualcosa come un "JOIN" che riattribuisce tutte le righe che non sono riuscite a "UNIRE"? Altro quindi 'SINISTRA JOIN' +' IS NULL'. Inoltre, il CTE è davvero necessario? Non può 'INSERIRE IN ThirdTable FROM SELECT NonMatchedData'? – Alexandre
@PeekaySwitch: certo - ma poi ** STAI ** facendo un 'LEFT OUTER JOIN' e controllando che una colonna dal' dbo.TargetTable' sia 'NULL' .... Non vedo quale altra opzione sarebbe sii lì, davvero .... –
Sai in cima alla tua testa cosa offre prestazioni migliori? Mi aspetto che il 'LEFT OUTER JOIN' sia più efficace, ma forse sono vicini, ho sempre cercato di evitare di usare' NOT IN' con enormi quantità di dati in 'Where' (come ID) – Alexandre