DELETE FROM
适用于: Databricks SQL Databricks Runtime
删除与谓词匹配的行。 如果未提供谓词,则删除所有行。
只有 Delta Lake 表支持此语句。
语法
DELETE FROM table_name [table_alias] [WHERE predicate]
参数
-
标识现有表。 名称不得包含时态规范。
table_name
不得为外表。 table_alias
定义表的别名。 该别名不得包含列的列表。
-
按谓词筛选行。
WHERE
谓词支持子查询,包括IN
、NOT IN
、EXISTS
、NOT EXISTS
和标量子查询。 不支持以下类型的子查询:- 嵌套子查询,即一个子查询内的另一个子查询
OR
中的NOT IN
子查询,例如a = 3 OR b NOT IN (SELECT c from t)
在大多数情况下,可以使用
NOT EXISTS
重写NOT IN
子查询。 建议尽可能使用NOT EXISTS
,因为执行带有NOT IN
子查询的DELETE
可能会速度较慢。
示例
> 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')