DELETE FROM (Delta Lake v Azure Databricks)

Odstraní řádky, které odpovídají predikátu. Pokud není k dispozici žádný predikát, odstraní všechny řádky.

Syntax

DELETE FROM table_identifier [AS alias] [WHERE predicate]
  • table_identifier

    • [database_name.] table_name: Název tabulky, volitelně kvalifikovaný s názvem databáze.
    • delta.`<path-to-table>`: Umístění existující rozdílové tabulky.
  • JAKO alias

    Definujte alias tabulky.

  • WHERE

    Filtruje řádky podle predikátu.

    WHEREPredikát podporuje poddotazy, včetně IN ,,, NOT IN EXISTS NOT EXISTS a skalárních poddotazů. Následující typy poddotazů nejsou podporovány:

    • Vnořené poddotazy, tj. poddotaz uvnitř jiného poddotazu
    • NOT INpoddotaz uvnitř, například OR````a = 3 OR b NOT IN (SELECT c from t)

    Ve většině případů můžete přepsat NOT IN poddotazy pomocí NOT EXISTS . Doporučujeme použít NOT EXISTS , kdykoli je to možné, stejně jako DELETE u NOT IN poddotazů může být pomalé.

Příklad

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

Příklady poddotazu

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