Compartilhar via


UPDATE

Aplica-se a:marca de seleção positiva SQL do Databricks marca de seleção positiva Runtime do Databricks

Atualiza os valores de coluna para as linhas que correspondem a um predicado. Quando nenhum predicado for fornecido, atualize os valores de coluna em todas as linhas.

Só há suporte para essa instrução em tabelas do Delta Lake.

Sintaxe

[ common_table_expression ]
  UPDATE table_name [table_alias]
     SET  { { column_name | field_name }  = [ expr | DEFAULT } [, ...]
     [WHERE clause]

Parâmetros

  • expressão de tabela comum

    As CTE (expressões de tabela comuns) são uma ou mais consultas nomeadas que podem ser reutilizadas várias vezes dentro do bloco de consulta principal para evitar cálculos repetidos ou para melhorar a capacidade de leitura de consultas aninhadas complexas.

  • table_name

    Identifica a tabela a ser atualizada. O nome da tabela não deve usar uma especificação temporal ou especificação de opções.

    A table_name não deve ser uma tabela estrangeira.

  • table_alias

    Define um alias para a tabela. O alias não deve incluir uma lista de colunas.

  • nome_da_coluna

    Uma referência a uma coluna na tabela. Você pode referenciar cada coluna no máximo uma vez.

  • field_name

    Uma referência ao campo dentro de uma coluna do tipo STRUCT. Você pode referenciar cada campo no máximo uma vez.

  • expr

    Uma expressão arbitrária. Se você referenciar a colunas table_name, elas representam o estado da linha antes da atualização.

  • PADRÃO

    Aplica-se a:verificação marcada como sim SQL do Databricks marca de seleção positiva Databricks Runtime 11.3 LTS e superior

    A expressão DEFAULT da coluna se uma for definida, caso contrário será NULL.

  • WHERE

    Filtra as linhas por predicado. A cláusula WHERE pode incluir subconsultas com as seguintes exceções:

    • Subconsultas aninhadas, ou seja, uma subconsulta dentro de outra subconsulta
    • Uma subconsulta NOT IN dentro de uma OR, por exemplo, a = 3 OR b NOT IN (SELECT c from t)

    Na maioria dos casos, você pode regenerar as subconsultas NOT IN usando NOT EXISTS. Você deve usar NOT EXISTS sempre que possível, pois a UPDATE com as subconsultas NOT IN pode ficar lenta.

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'