DELETE FROM

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

删除与谓词匹配的行。 如果未提供谓词,则删除所有行。

只有 Delta Lake 表支持此语句。

语法

DELETE FROM table_name [table_alias] [WHERE predicate]

参数

  • table_name

    标识现有表。 名称不得包含时态规范

    table_name 不得为外表。

  • table_alias

    定义表的别名。 该别名不得包含列的列表。

  • WHERE

    按谓词筛选行。

    WHERE 谓词支持子查询,包括 INNOT INEXISTSNOT 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')