DELETE FROM
適用於:Databricks SQL Databricks Runtime
刪除符合述詞的數據列。 未提供述詞時,會刪除所有數據列。
只有 Delta Lake tables才支援此語句。
語法
DELETE FROM table_name [table_alias] [WHERE predicate]
Parameters
-
識別現有的 table。 名稱不得包含時態性規格。
table_name
不得是外國 table。 -
定義 table的別名。 別名不得包含 columnlist。
-
依述詞篩選數據列。
述
WHERE
詞支持子查詢,包括IN
、NOT IN
、EXISTS
、NOT EXISTS
、 和純量子查詢。 不支援下列型態的子查詢:- 巢狀子查詢,也就是另一個子查詢內的子查詢
-
NOT IN
中的子查詢OR
,例如a = 3 OR b NOT IN (SELECT c from t)
在大部分情況下,您可以使用 重寫
NOT IN
子查詢NOT EXISTS
。 我們建議盡可能使用NOT EXISTS
,因為DELETE
使用NOT IN
子查詢可能會很慢。
範例
> DELETE FROM events WHERE date < '2017-01-01'
> DELETE FROM all_events
WHERE session_time < (SELECT min(session_time) FROM good_events)
> DELETE FROM orders AS t1
WHERE EXISTS (SELECT oid FROM returned_orders WHERE t1.oid = oid)
> DELETE FROM events
WHERE category NOT IN (SELECT category FROM events2 WHERE date > '2001-01-01')