UPDATE
Dotyczy: Databricks SQL Databricks Runtime
Aktualizuje wartości kolumn dla wierszy pasujących do predykatu. Jeśli nie podano predykatu, zaktualizuj wartości kolumn dla wszystkich wierszy.
Ta instrukcja jest obsługiwana tylko w przypadku tabel usługi Delta Lake.
Składnia
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
Parametry
-
Identyfikuje tabelę do zaktualizowania. Nazwa tabeli nie może używać specyfikacji czasowej ani specyfikacji opcji.
table_name
nie może być tabelą obcą. -
Zdefiniuj alias dla tabeli. Alias nie może zawierać listy kolumn.
-
Odwołanie do kolumny w tabeli. Możesz odwoływać się do każdej kolumny co najwyżej raz.
-
Odwołanie do pola w kolumnie typu STRUKTURA. Możesz odwoływać się do każdego pola co najwyżej raz.
-
Dowolne wyrażenie. Jeśli odwołujesz się do
table_name
kolumn, które reprezentują stan wiersza przed aktualizacją. DOMYŚLNY
Dotyczy: Databricks SQL Databricks Runtime 11.3 LTS i nowsze
Wyrażenie
DEFAULT
dla kolumny, jeśli jest zdefiniowane, wartość NULL w przeciwnym razie.-
Filtruj wiersze według predykatu. Klauzula
WHERE
może zawierać podzapytania z następującymi wyjątkami:- Zagnieżdżone podzapytania, czyli podzapytanie wewnątrz innego podzapytania
- Podzapytywanie
NOT IN
wewnątrz elementuOR
, na przykłada = 3 OR b NOT IN (SELECT c from t)
W większości przypadków można ponownie napisać
NOT IN
podzapytania przy użyciu poleceniaNOT EXISTS
. Należy używaćNOT EXISTS
zawsze, gdy jest to możliwe, tak jakUPDATE
w przypadkuNOT IN
podzapytania może być powolne.
Przykłady
> 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'