MERGE INTO
Atualiza, exclui ou insere linhas de forma condicional em uma tabela do Iceberg. Uma única instrução pode combinar ações de atualização, exclusão e inserção. Para ver a sintaxe, consulte MERGE INTO.
nota
MERGE INTO
é transacional e é compatível somente com tabelas do Apache Iceberg na versão 3 do mecanismo do Athena.
O exemplo a seguir exclui todos os clientes da tabela t
que estão na tabela de origem s
.
MERGE INTO accounts t USING monthly_accounts_update s ON t.customer = s.customer WHEN MATCHED THEN DELETE
O exemplo a seguir atualiza a tabela de destino t
com as informações do cliente presentes na tabela de origem s
. Para linhas de clientes na tabela t
que têm linhas de clientes correspondentes na tabela s
, o exemplo incrementa as aquisições na tabela t. Se a tabela t
não corresponder a uma linha de cliente na tabela s
, o exemplo irá inserir a linha de cliente da tabela s
na tabelat
.
MERGE INTO accounts t USING monthly_accounts_update s ON (t.customer = s.customer) WHEN MATCHED THEN UPDATE SET purchases = s.purchases + t.purchases WHEN NOT MATCHED THEN INSERT (customer, purchases, address) VALUES(s.customer, s.purchases, s.address)
O exemplo a seguir atualiza condicionalmente a tabela de destino t
com informações presentes na tabela de origem s
. O exemplo exclui qualquer linha de destino correspondente cujo endereço de origem seja “Centreville”. Para todas as outras linhas correspondentes, o exemplo adiciona as aquisições da origem e define o endereço de destino como o endereço da origem. Se não houver correspondência na tabela de destino, o exemplo irá inserir a linha da tabela de origem.
MERGE INTO accounts t USING monthly_accounts_update s ON (t.customer = s.customer) WHEN MATCHED AND s.address = 'Centreville' THEN DELETE WHEN MATCHED THEN UPDATE SET purchases = s.purchases + t.purchases, address = s.address WHEN NOT MATCHED THEN INSERT (customer, purchases, address) VALUES(s.customer, s.purchases, s.address)