DELETE FROM (Delta Lake на платформе Azure Databricks)

Удаляет строки, соответствующие предикату. Если предикат не указан, удаляет все строки.

Синтаксис

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

    • [database_name.] table_name: Имя таблицы, при необходимости дополненное именем базы данных.
    • delta.`<path-to-table>`: Расположение существующей разностной таблицы.
  • Псевдоним AS

    Определите псевдоним таблицы.

  • WHERE

    Фильтрация строк по предикату.

    WHEREПредикат поддерживает вложенные запросы, включая IN ,,, NOT IN EXISTS NOT EXISTS и скалярные вложенные запросы. Следующие типы вложенных запросов не поддерживаются:

    • Вложенные запросы, т. е. подзапросы внутри другого вложенного запроса
    • NOT IN вложенный запрос внутри OR , например a = 3 OR b NOT IN (SELECT c from t)

    В большинстве случаев можно переписать NOT IN вложенные запросы с помощью NOT EXISTS . Рекомендуется использовать по NOT EXISTS возможности, так как DELETE NOT IN вложенные запросы могут быть очень длительными.

Пример

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