UPDATE
Gilt für: Databricks SQL 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
-
Bestimmt die zu aktualisierende Tabelle. Der Tabellenname darf keine temporale Spezifikation enthalten.
table_name
darf keine Fremdtabelle sein. -
Hiermit wird ein Alias für die Tabelle definiert. Der Alias darf keine Spaltenliste enthalten.
-
Ein Verweis auf eine Spalte in der Tabelle. Sie können höchstens einmal auf jede Spalte verweisen.
-
Ein Verweis auf das Feld in einer Spalte mit dem Typ STRUCT. Sie können höchstens einmal auf jedes Feld verweisen.
-
Ein beliebiger Ausdruck. Wenn Sie auf
table_name
-Spalten verweisen, stellen diese den Zustand der Zeile vor der Aktualisierung dar. DEFAULT
Gilt für: Databricks SQL Databricks Runtime 11.3 LTS und höher
Der
DEFAULT
-Ausdruck für die Spalte, wenn eine definiert ist, andernfalls NULL.-
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 inOR
, z. B.a = 3 OR b NOT IN (SELECT c from t)
In den meisten Fällen können Sie
NOT IN
-Unterabfragen mithilfe vonNOT EXISTS
umschreiben. Sie sollten nach MöglichkeitNOT EXISTS
verwenden, daUPDATE
mitNOT 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'