Partilhar via


ATUALIZAR

Aplica-se a: Marque Sim Databricks SQL Marque Sim 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

  • table_name

    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.

  • table_alias

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

  • column_name

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

  • field_name

    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.

  • EXPR

    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: Marque Sim Databricks SQL Marque Sim Databricks Runtime 11.3 LTS e superior

    A DEFAULT expressão para a coluna, se uma estiver definida, NULL caso contrário.

  • EM QUE

    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 um OR, por exemplo, a = 3 OR b NOT IN (SELECT c from t)

    Na maioria dos casos, você pode reescrever NOT IN subconsultas usando NOT EXISTSo . Você deve usar NOT EXISTS sempre que possível, pois UPDATE as NOT 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'