UPDATE

Gäller för: markerad ja Databricks SQL markerad ja 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

  • table_name

    Identifierar tabellen som ska uppdateras. Tabellnamnet får inte använda en temporal specifikation.

    table_name får inte vara en sekundär tabell.

  • table_alias

    Definiera ett alias för tabellen. Aliaset får inte innehålla en kolumnlista.

  • column_name

    En referens till en kolumn i tabellen. Du kan referera till varje kolumn högst en gång.

  • field_name

    En referens till fältet i en kolumn av typen STRUCT. Du kan referera till varje fält högst en gång.

  • expr

    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: markerad ja Databricks SQL markerad ja Databricks Runtime 11.3 LTS och senare

    Uttrycket DEFAULT för kolumnen om en definieras, NULL annars.

  • VAR

    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 en OR, till exempel a = 3 OR b NOT IN (SELECT c from t)

    I de flesta fall kan du skriva om NOT IN underfrågor med hjälp av NOT EXISTS. Du bör använda NOT EXISTS när det är möjligt, eftersom UPDATE underfrågor NOT 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'