DELETE FROM
Gilt für: Databricks SQL 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
-
Hiermit wird eine vorhandene Tabelle identifiziert. Der Name darf keine temporale Spezifikation enthalten.
table_name
darf keine Fremdtabelle sein. -
Hiermit wird ein Alias für die Tabelle definiert. Der Alias darf keine Spaltenliste enthalten.
-
Filtert Zeilen nach Prädikat.
Das Prädikat
WHERE
unterstützt Unterabfragen, einschließlichIN
,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 einerOR
-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 vonNOT EXISTS
umschreiben. Wir empfehlen, nach MöglichkeitNOT EXISTS
zu verwenden, daDELETE
mitNOT 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')