1
resposta

Merge com multiplos JOINs

Minha dúvida é na utilização do MERGE no lugar do UPDATE com FROM, ao qual aparentemente é mais fácil e mais simples.

Inicialmente, a impressão que eu tive com o MERGE foi que ele é apenas para associações do tipo INNER JOIN e com apenas uma associação de tabela.

Através do comando MERGE, é possível utilizar mais de uma associação com JOIN ?

No caso do Update com FROM, é possível usar LEFT JOIN e usar mais de uma tabela pra fazer o UPDATE.

Como exemplo:

UPDATE A
SET A.Coluna1 = (
    CASE 
        WHEN A.Coluna5 = 0 THEN B.Coluna1
        WHEN A.Coluna5 = 1 THEN C.Coluna4
        ELSE 2
    END
)
FROM Tabela1 AS [A]
LEFT JOIN Tabela2 AS [B] ON A.PK_Tabela1 = B.PK_Tabela2
LEFT JOIN Tabela3 AS [C] ON A.PK_Tabela1 = C.FK_Tabela3

No caso a acima utilizei o LEFT JOIN porque um registro pode existir na Tabela1 e não existir nas outras subsequentes.

Tentei fazer algo parecido com MERGE porém não obtive sucesso.

1 resposta

Olá Higor, Não ficou claro o que de fato você está buscando fazer, mas a minha dica é:

Mesmo você achando que o UPDATE é mais dificil que o MERGE, eles tem propostas diferentes.

O UPDATE é usado para atualizar registro e o MERGE para atualizar, com outro registro como base. Compreende?

Espero ter ajudado, e fico à disposição.

Bons estudos!