Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 dichiarazione è supportata solo per le tabelle Delta Lake.
Sintassi
[ common_table_expression ]
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
Parametri
-
Le espressioni di tabella comuni (CTE) sono una o più query denominate che possono essere riutilizzate più volte all'interno del blocco di query principale per evitare calcoli ripetuti o per migliorare la leggibilità di query complesse annidate.
-
Identifica la tabella da aggiornare. Il nome della tabella non deve usare una specifica temporale o una specifica delle opzioni.
table_namenon 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 successiveL'espressione
DEFAULTper la colonna se definita, altrimenti NULL.-
Filtrare le righe in base al predicato. La
WHEREclausola può includere sottoquery con le eccezioni seguenti:- Sottoquery annidata, ovvero una sottoquery all'interno di un'altra sottoquery
- Sottoquery
NOT INall'interno di unOR, ad esempioa = 3 OR b NOT IN (SELECT c from t)
Nella maggior parte dei casi, è possibile riscrivere
NOT INsottoquery usandoNOT EXISTS. È consigliabile usareNOT EXISTSquando possibile, poichéUPDATEcon sottoqueryNOT INpuò essere lento.
Aggiornamento da un'altra tabella o join
Databricks SQL non supporta la UPDATE ... FROM ... JOIN sintassi usata in altri dialetti SQL, ad esempio l'aggiornamento di colonne in una tabella da un join con un'altra tabella. Per aggiornare una tabella in base a un join con un'altra tabella o sottoquery, utilizzare MERGE INTO invece .
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'
Nell'esempio seguente viene illustrato come aggiornare una tabella da un join usando MERGE anziché una sintassi non supportata UPDATE ... FROM ... JOIN :
-- Equivalent to (not supported in Databricks): UPDATE t1 SET t1.c1 = t2.c1 FROM t1 INNER JOIN t2 ON t1.c2 = t2.c2
> MERGE INTO t1
USING t2 ON t1.c2 = t2.c2
WHEN MATCHED THEN UPDATE SET t1.c1 = t2.c1;