UPDATE

Si applica a: segno di spunta sì Databricks SQL segno di spunta sì 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

  • table_name

    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 esterna.

  • table_alias

    Definire un alias per la tabella. L'alias non deve includere un elenco di colonne.

  • column_name

    Riferimento a una colonna nella tabella. È possibile fare riferimento a ogni colonna al massimo una volta.

  • field_name

    Riferimento al campo all'interno di una colonna di tipo STRUCT. È possibile fare riferimento a ogni campo al massimo una volta.

  • expr

    Espressione arbitraria. Se si fa riferimento table_name a colonne che rappresentano lo stato della riga prima dell'aggiornamento.

  • DEFAULT

    Si applica a: segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 11.3 LTS e versioni successive

    Espressione DEFAULT per la colonna se ne è definita una, NULL in caso contrario.

  • WHERE

    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 un ORoggetto , ad esempio a = 3 OR b NOT IN (SELECT c from t)

    Nella maggior parte dei casi, è possibile riscrivere NOT IN sottoquery usando NOT EXISTS. È consigliabile usare NOT EXISTS quando possibile, come UPDATE con NOT 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'