UPDATE

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Actualiza los valores de columna de las filas que coinciden con un predicado. Cuando no se proporciona ningún predicado, actualiza los valores de columna de todas las filas.

Esta instrucción solo es compatible con tablas de Delta Lake.

Sintaxis

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

Parámetros

  • table_name

    Identifica la tabla que se va a actualizar. El nombre de la tabla no debe usar una especificación temporal.

    table_name no debe ser una tabla externa.

  • table_alias

    Define un alias para la tabla. El alias no debe incluir una lista de columnas.

  • column_name

    Referencia a una columna de la tabla. Puede hacer referencia a cada columna una vez como máximo.

  • field_name

    Referencia al campo de una columna de tipo de STRUCT. Puede hacer referencia a cada campo como máximo una vez.

  • expr

    Expresión arbitraria. Si hace referencia a columnas table_name, estas representan el estado de la fila antes de la actualización.

  • DEFAULT

    Se aplica a:casilla marcada como Sí Databricks SQL Versión 2022.35 del almacén de SQL o versiones posteriores casilla marcada como Sí Databricks Runtime 11.2 y versiones posteriores

    Si se define una, será una expresión DEFAULT de la columna; de lo contrario, será NULL.

  • WHERE

    Filtre las filas por predicado. La cláusula WHERE puede incluir subconsultas con las siguientes excepciones:

    • Subconsultas anidadas, es decir, una subconsulta dentro de otra.
    • Una subconsulta NOT IN dentro de un objeto OR; por ejemplo, a = 3 OR b NOT IN (SELECT c from t).

    En la mayoría de los casos, se pueden reescribir las subconsultas NOT IN mediante NOT EXISTS. Debe usar NOT EXISTS siempre que sea posible, ya que las subconsultas UPDATE con NOT IN pueden tardar.

Ejemplos

> 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'