I came up with a quite sleak solution, well at least is what I want to believe:
/****** INSERT NOT EXISTING ROWS ******/
INSERT INTO dbo.myFirstTable
SELECT KeyColumn1, KeyColumn2, KeyColumn3,Column1
FROM (
SELECT KeyColumn1, KeyColumn2, KeyColumn3,Column1
FROM mySecondDataBase.dbo.myFirstTable
WHERE (KeyColumn1 = 1)
AND (KeyColumn2 IN (1, 3, 35, 36, 29, 12, 38))
AND (KeyColumn3 = 'A')
) as myTempSubQuery
WHERE (
SELECT COUNT(*)
FROM dbo.myFirstTable
WHERE (KeyColumn1 = myTempSubQuery.KeyColumn1)
AND (KeyColumn2 = myTempSubQuery.KeyColumn2)
AND (KeyColumn3 = myTempSubQuery.KeyColumn3)
) = 0
/****** UPDATE EXISTING ROWS ******/
UPDATE dbo.myFirstTable
SET Column1 = myTempSubQuery.Column1
FROM (
SELECT KeyColumn1, KeyColumn2, KeyColumn3,Column1
FROM mySecondDataBase.dbo.myFirstTable
WHERE (KeyColumn1 = 1)
AND (KeyColumn2 IN (1, 3, 35, 36, 29, 12, 38))
AND (KeyColumn3 = 'A')
) as myTempSubQuery, dbo.myFirstTable targetTableInFirstDataBase
WHERE (targetTableInFirstDataBase.KeyColumn1 = myTempSubQuery.KeyColumn1)
AND (targetTableInFirstDataBase.KeyColumn2 = myTempSubQuery.KeyColumn2)
AND (targetTableInFirstDataBase.KeyColumn3 = myTempSubQuery.KeyColumn3)
Some inspiration coming from:
http://www.sqlrecipes.com/sql_questions_answers/insert_update_record_if_already_exists-6/
Code Markup from:
http://lukabloga.blogspot.com/2008/10/to-test-new-highlighting.html
No hay comentarios:
Publicar un comentario