Partilhar via


UPDATE

Aplica-se a:assinalado Databricks SQL assinalado 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 tabela externa.

  • 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 referenciar table_name as colunas, elas representam o estado da linha antes da atualização.

  • INADIMPLÊNCIA

    Aplica-se a:marcado como sim Databricks SQL marcado como sim Databricks Runtime 11.3 LTS e superior

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

  • WHERE

    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, podes reescrever NOT IN as subconsultas utilizando NOT EXISTS. Você deve usar NOT EXISTS sempre que possível, pois UPDATE com 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'