Freigeben über


DELETE FROM

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Hiermit werden die Zeilen gelöscht, die mit einem Prädikat übereinstimmen. Wenn kein Prädikat angegeben ist, werden alle Zeilen gelöscht.

Diese Anweisung wird nur für Delta Lake-Tabellen unterstützt.

Syntax

DELETE FROM table_name [table_alias] [WHERE predicate]

Parameter

  • table_name

    Hiermit wird eine vorhandene Tabelle identifiziert. Der Name darf keine temporale Spezifikation enthalten.

    table_name darf keine Fremdtabelle sein.

  • table_alias

    Hiermit wird ein Alias für die Tabelle definiert. Der Alias darf keine Spaltenliste enthalten.

  • WHERE

    Filtert Zeilen nach Prädikat.

    Das Prädikat WHERE unterstützt Unterabfragen, einschließlich IN, NOT IN, EXISTS, NOT EXISTS und skalare Unterabfragen. Die folgenden Unterabfragetypen werden nicht unterstützt:

    • Geschachtelte Unterabfragen, d. h. eine Unterabfrage innerhalb einer anderen Unterabfrage
    • NOT IN-Unterabfrage in einer OR-Abfrage, z. B. a = 3 OR b NOT IN (SELECT c from t)

    In den meisten Fällen können Sie NOT IN-Unterabfragen mithilfe von NOT EXISTS umschreiben. Wir empfehlen, nach Möglichkeit NOT EXISTS zu verwenden, da DELETE mit NOT IN-Unterabfragen langsam sein kann.

Beispiele

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