Dela via


DELETE FROM

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Tar bort de rader som matchar ett predikat. När inget predikat anges tar alla rader bort.

Det här påståendet stöds endast för Delta Lake-tabeller.

Syntax

[ common_table_expression ]
    DELETE FROM table_name [table_alias] [WHERE predicate]

Parametrar

  • vanliga tabelluttryck

    Vanliga tabelluttryck (CTE) är en eller flera namngivna frågor som kan återanvändas flera gånger inom huvudfrågeblocket för att undvika upprepade beräkningar eller för att förbättra läsbarheten för komplexa, kapslade frågor.

  • table_name

    Identifierar en befintlig tabell. Namnet får inte innehålla någon temporal specifikation.

    table_name får inte vara en utländsk tabell.

  • table_alias

    Definiera ett alias för tabellen. Aliaset får inte innehålla en kolumnlista.

  • WHERE

    Filtrera rader efter predikat.

    Predikatet WHERE stöder underfrågor, inklusive IN, NOT IN, EXISTS, NOT EXISTSoch 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 underfråga i en OR, till exempel a = 3 OR b NOT IN (SELECT c from t)

    I de flesta fall kan du skriva om NOT IN underfrågor med hjälp av NOT EXISTS. Vi rekommenderar att du använder NOT EXISTS när det är möjligt, eftersom underfrågor med DELETE och NOT 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')