Article image
BROGTTI
BROGTTI12/09/2023 10:12
Compartilhe

O QUE É "MERGE INTO ()"?

  • #SQL
O comando merge into () é uma instrução que permite combinar dados de diferentes tabelas em uma única operação. Ele é usado quando você deseja sincronizar dados entre uma tabela de origem e uma tabela de destino, realizando inserções e atualizações conforme o necessário. Isso permite que você atualize registros exigentes e insira novos registros em uma única operação, evitando a necessidade de várias instruções SQL separadas.

A sintaxe geral da instrução merge into é a seguinte:

MERGE INTO tabela_destino AS alvo

USING tabela_origem AS origem

ON condição_de_correspondência

WHEN MATCHED THEN
  UPDATE SET coluna1 = valor1, coluna2 = valor2, ...

WHEN NOT MATCHED THEN
  INSERT (coluna1, coluna2, ...) VALUES (valor1, valor2, ...);

Vou explicar os principais elementos dessa instrução:

- tabela_destino: É a tabela alvo onde você deseja aplicar as operações.

- tabela_origem: É a tabela de onde você obtém os dados para atualizar ou inserir na tabela de destino.

- condição_de_correspondência: É a condição usada para determinar quando uma linha na tabela de origem corresponde a uma linha na tabela de destino.

- when matched then: Esta parte é executada quando uma correspondência é encontrada entre a tabela de destino e a tabela de origem. É aqui que você especifica as operações de atualização nas colunas da tabela de destino.

- when not matched then: Esta parte é executada quando não há correspondência entre a tabela de destino e a tabela de origem. É onde você especifica as operações de inserção.

Vamos ver um exemplo simplificado:

Suponha que temos as seguintes tabelas:

Tabela "clientes"

+----+-------+-------+
| ID | nome  | email |
+----+-------+-------+
| 1  | Ana   | ...   |
| 2  | Pedro | ...   |
+----+-------+-------+

Tabela "novos_clientes"

+----+-------+-------+
| ID | nome  | email |
+----+-------+-------+
| 1  | Maria | ...   |
| 3  | João  | ...   |
+----+-------+-------+

Agora, podemos usar a instrução merge into para atualizar a tabela "clientes" com os dados da tabela "novos_clientes":

MERGE INTO clientes AS alvo
USING novos_clientes AS origem
ON alvo.ID = origem.ID
WHEN MATCHED THEN
  UPDATE SET alvo.nome = origem.nome, alvo.email = origem.email
WHEN NOT MATCHED THEN
  INSERT (ID, nome, email) VALUES (origem.ID, origem.nome, origem.email);

Neste exemplo, a instrução merge into verifica a correspondência dos IDs nas duas tabelas. Se um ID corresponder, os dados são atualizados. Se não houver correspondência, um novo registro é inserido na tabela "clientes".

Merge Into () : https://ury1.com/Os7X2
Compartilhe
Comentários (0)