UPDATE
適用於: Databricks SQL Databricks Runtime
更新符合述詞之數據列的數據行值。 如果未提供述詞,請更新所有數據列的數據行值。
只有 Delta Lake 數據表才支援此語句。
語法
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
參數
-
識別要更新的數據表。 數據表名稱不得使用 時態規格或選項規格。
table_name
不得為外表。 -
定義數據表的別名。 別名不得包含數據行清單。
-
數據表中數據行的參考。 您最多可以參考每個資料行一次。
-
STRUCT 類型數據行內欄位的參考。 您最多可以參考每個欄位一次。
-
任意表達式。 如果您參考
table_name
數據行,它們代表更新前的數據列狀態。 DEFAULT
適用於: Databricks SQL Databricks Runtime 11.3 LTS 和更新版本
DEFAULT
如果已定義數據行的表達式,則為 NULL,否則為 NULL。-
依述詞篩選數據列。 子
WHERE
句可能包含具有下列例外狀況的子查詢:- 巢狀子查詢,也就是另一個子查詢內的子查詢
NOT IN
中的子查詢OR
,例如a = 3 OR b NOT IN (SELECT c from t)
在大部分情況下,您可以使用 重寫
NOT IN
子查詢NOT EXISTS
。 您應該盡可能使用NOT EXISTS
,因為UPDATE
子NOT 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'