DELETE FROM

適用対象:「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク 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 IN サブクエリを使用した DELETE は遅くなる可能性があるため、可能な限り NOT EXISTS を使用することをお勧めします。

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