UPDATE
Si applica a: Databricks SQL
Databricks Runtime
Aggiorna i valori di colonna per le righe che corrispondono a un predicato. Quando non viene specificato alcun predicato, aggiornare i valori di colonna per tutte le righe.
Questa istruzione è supportata solo per le tabelle Delta Lake.
Sintassi
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
Parametri
-
Identifica la tabella da aggiornare. Il nome della tabella non deve usare una specifica temporale o una specifica delle opzioni.
table_name
non deve essere una tabella straniera. -
Definire un alias per la tabella. L'alias non deve includere un elenco di colonne.
-
Riferimento a una colonna nella tabella. È possibile fare riferimento a ogni colonna al massimo una volta.
-
Riferimento al campo all'interno di una colonna di tipo STRUCT. È possibile fare riferimento a ogni campo al massimo una volta.
-
Espressione arbitraria. Se si fa riferimento alle colonne
table_name
, esse rappresentano lo stato della riga prima dell'aggiornamento. DEFAULT
Si applica a:
Databricks SQL
Databricks Runtime 11.3 LTS e versioni successive
Espressione
DEFAULT
per la colonna se ne è definita una, NULL in caso contrario.-
Filtrare le righe in base al predicato. La
WHERE
clausola può includere sottoquery con le eccezioni seguenti:- Sottoquery annidata, ovvero una sottoquery all'interno di un'altra sottoquery
- Sottoquery
NOT IN
all'interno di unOR
oggetto , ad esempioa = 3 OR b NOT IN (SELECT c from t)
Nella maggior parte dei casi, è possibile riscrivere
NOT IN
sottoquery usandoNOT EXISTS
. È consigliabile usareNOT EXISTS
quando possibile, comeUPDATE
conNOT IN
le sottoquery può essere lento.
Esempi
> 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'