DELETE from (Delta Lake on Azure Databricks)DELETE FROM (Delta Lake on Azure Databricks)

DELETE FROM [db_name.]table_name [AS alias] [WHERE predicate]

Löschen Sie die Zeilen, die einem Prädikat entsprechen.Delete the rows that match a predicate. Wenn kein Prädikat angegeben wird, löschen Sie alle Zeilen.When no predicate is provided, delete all rows.

WHERE

Filtern Sie Zeilen nach Prädikat.Filter rows by predicate.

Das- WHERE Prädikat unterstützt Unterabfragen, einschließlich IN ,, NOT IN EXISTS , NOT EXISTS und skalare Unterabfragen.The WHERE predicate supports subqueries, including IN, NOT IN, EXISTS, NOT EXISTS, and scalar subqueries. Die folgenden Typen von Unterabfragen werden nicht unterstützt:The following types of subqueries are not supported:

  • Geschachtelte Unterabfragen, d. h. eine Unterabfrage in einer anderen UnterabfrageNested subqueries, that is, an subquery inside another subquery
  • NOT INUnterabfrage in, z. b. OR``a = 3 OR b NOT IN (SELECT c from t)NOT IN subquery inside an OR, for example, a = 3 OR b NOT IN (SELECT c from t)

In den meisten Fällen können Sie NOT IN Unterabfragen mithilfe von neu schreiben NOT EXISTS .In most cases, you can rewrite NOT IN subqueries using NOT EXISTS. Es wird empfohlen NOT EXISTS , wann immer möglich zu verwenden, da die DELETE NOT IN Unterabfragen langsam sein können.We recommend using NOT EXISTS whenever possible, as DELETE with NOT IN subqueries can be slow.

BeispielExample

DELETE FROM events WHERE date < '2017-01-01'

Beispiele für UnterabfragenSubquery Examples

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