Udostępnij za pośrednictwem


UPDATE

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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

  • table_name

    Identyfikuje tabelę do zaktualizowania. Nazwa tabeli nie może używać specyfikacji czasowej ani specyfikacji opcji.

    table_name nie może być tabelą obcą.

  • table_alias

    Zdefiniuj alias dla tabeli. Alias nie może zawierać listy kolumn.

  • column_name

    Odwołanie do kolumny w tabeli. Możesz odwoływać się do każdej kolumny co najwyżej raz.

  • field_name

    Odwołanie do pola w kolumnie typu STRUKTURA. Możesz odwoływać się do każdego pola co najwyżej raz.

  • wyrażenie

    Dowolne wyrażenie. Jeśli odwołujesz się do table_name kolumn, które reprezentują stan wiersza przed aktualizacją.

  • DOMYŚLNY

    Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 11.3 LTS i nowsze

    Wyrażenie DEFAULT dla kolumny, jeśli jest zdefiniowane, wartość NULL w przeciwnym razie.

  • WHERE

    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 elementu OR, na przykład a = 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 polecenia NOT EXISTS. Należy używać NOT EXISTS zawsze, gdy jest to możliwe, tak jak UPDATE w przypadku NOT 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'