UPDATE
Gäller för: Databricks SQL Databricks Runtime
Uppdaterar kolumnvärdena för de rader som matchar ett predikat. När inget predikat har angetts uppdaterar du kolumnvärdena för alla rader.
Den här instruktionen stöds endast för Delta Lake-tabeller.
Syntax
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
Parametrar
-
Identifierar tabellen som ska uppdateras. Tabellnamnet får inte använda en temporal specifikation.
table_name
får inte vara en sekundär tabell. -
Definiera ett alias för tabellen. Aliaset får inte innehålla en kolumnlista.
-
En referens till en kolumn i tabellen. Du kan referera till varje kolumn högst en gång.
-
En referens till fältet i en kolumn av typen STRUCT. Du kan referera till varje fält högst en gång.
-
Ett godtyckligt uttryck. Om du refererar till
table_name
kolumner representerar de tillståndet för raden före uppdateringen. STANDARD
Gäller för: Databricks SQL Databricks Runtime 11.3 LTS och senare
Uttrycket
DEFAULT
för kolumnen om en definieras, NULL annars.-
Filtrera rader efter predikat. Satsen
WHERE
kan innehålla underfrågor med följande undantag:- Kapslade underfrågor, d.s.a. en underfråga i en annan underfråga
- En
NOT IN
underfråga i enOR
, till exempela = 3 OR b NOT IN (SELECT c from t)
I de flesta fall kan du skriva om
NOT IN
underfrågor med hjälp avNOT EXISTS
. Du bör användaNOT EXISTS
när det är möjligt, eftersomUPDATE
underfrågorNOT IN
kan vara långsamma.
Exempel
> 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'