Freigeben über


UPDATE

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Aktualisiert die Spaltenwerte für die Zeilen, die mit einem Prädikat übereinstimmen. Wenn kein Prädikat angegeben wird, aktualisieren Sie die Spaltenwerte für alle Zeilen.

Diese Anweisung wird nur für Delta Lake-Tabellen unterstützt.

Syntax

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

Parameter

  • table_name

    Bestimmt die zu aktualisierende Tabelle. Der Tabellenname darf keine temporale Spezifikation enthalten.

    table_name darf keine Fremdtabelle sein.

  • table_alias

    Hiermit wird ein Alias für die Tabelle definiert. Der Alias darf keine Spaltenliste enthalten.

  • column_name

    Ein Verweis auf eine Spalte in der Tabelle. Sie können höchstens einmal auf jede Spalte verweisen.

  • field_name

    Ein Verweis auf das Feld in einer Spalte mit dem Typ STRUCT. Sie können höchstens einmal auf jedes Feld verweisen.

  • expr

    Ein beliebiger Ausdruck. Wenn Sie auf table_name-Spalten verweisen, stellen diese den Zustand der Zeile vor der Aktualisierung dar.

  • DEFAULT

    Gilt für: Häkchen ja Databricks SQL Häkchen Databricks Runtime 11.3 LTS und höher

    Der DEFAULT-Ausdruck für die Spalte, wenn eine definiert ist, andernfalls NULL.

  • WHERE

    Filtert Zeilen nach Prädikat. Die WHERE-Klausel kann Unterabfragen mit den folgenden Ausnahmen enthalten:

    • Geschachtelte Unterabfragen, d. h. eine Unterabfrage innerhalb einer anderen Unterabfrage
    • Eine NOT IN-Unterabfrage in OR, z. B. a = 3 OR b NOT IN (SELECT c from t)

    In den meisten Fällen können Sie NOT IN-Unterabfragen mithilfe von NOT EXISTS umschreiben. Sie sollten nach Möglichkeit NOT EXISTS verwenden, da UPDATE mit NOT IN-Unterabfragen langsam sein kann.

Beispiele

> 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'