DELETE FROM
Область применения: Databricks SQL Databricks Runtime
Удаляет строки, соответствующие предикату. Если предикат не указан, удаляет все строки.
Эта инструкция поддерживается только для таблиц Delta Lake.
Синтаксис
DELETE FROM table_name [table_alias] [WHERE predicate]
Параметры
-
Определяет существующую таблицу. Имя не должно включать темпоральную спецификацию.
table_name
не должен быть внешней таблицей. -
Определите псевдоним для таблицы. Псевдоним не должен содержать список столбцов.
-
Фильтрация строк по предикату.
Предикат
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')