DELETE FROM
適用対象: Databricks SQL Databricks Runtime
述語に一致する行を削除します。 述語が指定されていない場合は、すべての行を削除します。
このステートメントは、Delta Lake テーブルでのみサポートされます。
構文
DELETE FROM table_name [table_alias] [WHERE predicate]
パラメーター
-
既存のテーブルを識別します。 この名前には、テンポラル仕様を含めることはできません。
table_name
を外部テーブルにすることはできません。 -
テーブルの別名を定義します。 別名に列リストを含めることはできません。
-
行を述語でフィルター処理します。
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 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')