UPDATE
Se aplica a: Databricks SQL 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
-
Identifica la tabla que se va a actualizar. El nombre de la tabla no debe usar una especificación temporal ni una especificación de opciones.
table_name
no debe ser una tabla externa. -
Define un alias para la tabla. El alias no debe incluir una lista de columnas.
-
Referencia a una columna de la tabla. Puede hacer referencia a cada columna una vez como máximo.
-
Referencia al campo de una columna de tipo de STRUCT. Puede hacer referencia a cada campo como máximo una vez.
-
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: Databricks SQL Databricks Runtime 11.3 LTS y versiones posteriores
Si se define una, será una expresión
DEFAULT
de la columna; de lo contrario, será NULL.-
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 objetoOR
; 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
medianteNOT EXISTS
. Debe usarNOT EXISTS
siempre que sea posible, ya que las subconsultasUPDATE
conNOT 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'