Поделиться через


DELETE FROM;

Область применения: флажок Databricks SQL флажок Databricks Runtime

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

Эта инструкция поддерживается только для таблиц Delta Lake.

Синтаксис

DELETE FROM table_name [table_alias] [WHERE predicate]

Параметры

  • table_name

    Указывает существующую таблицу. Имя не должно содержать временную спецификацию.

    table_name не должно быть внешней таблицей.

  • table_alias

    Указывает псевдоним для таблицы. Псевдоним не должен включать список столбцов.

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