Condividi tramite


UPDATE

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Aggiorna il columnvalues per le righe che corrispondono a un predicato. Quando non viene specificato alcun predicato, update il columnvalues per tutte le righe.

Questa istruzione è supportata solo per Delta Lake tables.

Sintassi

UPDATE table_name [table_alias]
   SET  { { column_name | field_name }  = [ expr | DEFAULT } [, ...]
   [WHERE clause]

Parameters

  • table_name

    Identifica table da aggiornare. Il nome table non deve usare una specifica temporale o una specifica delle opzioni.

    table_name non deve essere un tableesterno.

  • table_alias

    Definire un alias per il table. L'alias non deve includere un columnlist.

  • column_name

    Riferimento a un column nel table. È possibile fare riferimento a ogni column al massimo una volta.

  • field_name

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

  • expr

    Espressione arbitraria. Se si fa riferimento a table_nameecolumns, essi rappresentano lo stato della riga prima del update.

  • 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 il column se è definita, 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'