共用方式為


UPDATE

適用於:核取記號為「是」Databricks SQL 核取記號為「是」Databricks Runtime

更新符合述詞的數據列 columnvalues。 未提供述詞時,update 所有數據列的 columnvalues。

此語句僅在 Delta Lake tables中得到支援。

語法

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

Parameters

  • table_name

    識別出要更新的 table。 table 名稱不得使用 時態規格或選項規格

    table_name 不得是外國 table。

  • table_alias

    定義 table的別名。 別名不得包含 columnlist。

  • column_name

    table中 column 的參考。 您最多可以參考每個 column 一次。

  • field_name

    STRUCT 類型 column 內的欄位參考。 您最多可以參考每個欄位一次。

  • expr

    任意表達式。 如果您參考 table_name和columns,它們表示在 update之前的列狀態。

  • DEFAULT

    適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 11.3 LTS 和更新版本

    如果定義了 column,則輸出 DEFAULT 表示式,否則輸出 NULL。

  • WHERE

    依述詞篩選數據列。 子 WHERE 句可能包含具有下列例外狀況的子查詢:

    • 巢狀子查詢,也就是另一個子查詢內的子查詢
    • NOT IN中的子查詢OR,例如a = 3 OR b NOT IN (SELECT c from t)

    在大部分情況下,您可以使用 重寫 NOT IN 子查詢 NOT EXISTS。 您應該盡可能使用 NOT EXISTS ,因為 UPDATENOT IN 查詢可能會很慢。

範例

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