ATUALIZAR
Aplica-se a: Databricks SQL Databricks Runtime
Atualiza os valores de coluna para as linhas que correspondem a um predicado. Quando nenhum predicado for fornecido, atualize os valores de coluna para todas as linhas.
Esta instrução só é suportada para tabelas Delta Lake.
Sintaxe
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
Parâmetros
-
Identifica a tabela a ser atualizada. O nome da tabela não deve usar uma especificação temporal ou uma especificação de opções.
table_name
não deve ser uma mesa estrangeira. -
Defina um alias para a tabela. O alias não deve incluir uma lista de colunas.
-
Uma referência a uma coluna na tabela. Você pode fazer referência a cada coluna no máximo uma vez.
-
Uma referência ao campo dentro de uma coluna do tipo STRUCT. Você pode fazer referência a cada campo no máximo uma vez.
-
Uma expressão arbitrária. Se você fizer referência
table_name
a colunas, elas representam o estado da linha antes da atualização. INADIMPLÊNCIA
Aplica-se a: Databricks SQL Databricks Runtime 11.3 LTS e superior
A
DEFAULT
expressão para a coluna, se uma estiver definida, NULL caso contrário.-
Filtrar linhas por predicado. A
WHERE
cláusula pode incluir subconsultas, com as seguintes exceções:- Subconsultas aninhadas, ou seja, uma subconsulta dentro de outra subconsulta
- Uma
NOT IN
subconsulta dentro de umOR
, por exemplo,a = 3 OR b NOT IN (SELECT c from t)
Na maioria dos casos, você pode reescrever
NOT IN
subconsultas usandoNOT EXISTS
o . Você deve usarNOT EXISTS
sempre que possível, poisUPDATE
asNOT IN
subconsultas podem ser lentas.
Exemplos
> UPDATE events SET eventType = 'click' WHERE eventType = 'clk'
> UPDATE all_events
SET session_time = 0, ignored = true
WHERE session_time < (SELECT min(session_time) FROM good_events)
> UPDATE orders AS t1
SET order_status = 'returned'
WHERE EXISTS (SELECT oid FROM returned_orders WHERE t1.oid = oid)
> UPDATE events
SET category = 'undefined'
WHERE category NOT IN (SELECT category FROM events2 WHERE date > '2001-01-01')
> UPDATE events
SET ignored = DEFAULT
WHERE eventType = 'unknown'