DELETE FROM
Gäller för: Databricks SQL
Databricks Runtime
Tar bort de rader som matchar ett predikat. När inget predikat anges tar alla rader bort.
Den här instruktionen stöds endast för Delta Lake-tabeller.
Syntax
DELETE FROM table_name [table_alias] [WHERE predicate]
Parametrar
-
Identifierar en befintlig tabell. Namnet får inte innehålla någon temporal specifikation.
table_name
får inte vara en sekundär tabell. -
Definiera ett alias för tabellen. Aliaset får inte innehålla en kolumnlista.
-
Filtrera rader efter predikat.
Predikatet
WHERE
stöder underfrågor, inklusiveIN
,NOT IN
,EXISTS
,NOT EXISTS
och skalära underfrågor. Följande typer av underfrågor stöds inte:- Kapslade underfrågor, d.s.a. en underfråga i en annan underfråga
-
NOT IN
subquery i enOR
, till exempela = 3 OR b NOT IN (SELECT c from t)
I de flesta fall kan du skriva om
NOT IN
underfrågor med hjälp avNOT EXISTS
. Vi rekommenderar att du använderNOT EXISTS
när det är möjligt, eftersomDELETE
underfrågorNOT IN
kan vara långsamma.
Exempel
> 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')