DELETE FROM
Aplica-se a: SQL do Databricks Runtime do Databricks
Exclui as linhas que correspondem a um predicado. Quando nenhum predicado é fornecido, exclui todas as linhas.
Só há suporte para essa instrução em tabelas do Delta Lake.
Sintaxe
DELETE FROM table_name [table_alias] [WHERE predicate]
Parâmetros
-
Identifica uma tabela existente. O nome não deve incluir uma especificação temporal.
A
table_name
não deve ser uma tabela estrangeira. -
Define um alias para a tabela. O alias não deve incluir uma lista de colunas.
-
Filtra as linhas por predicado.
O predicado
WHERE
dá suporte a subconsultas, incluindo as subconsultasIN
,NOT IN
,EXISTS
,NOT EXISTS
e escalares. Não há suporte para os seguintes tipos de subconsultas:- Subconsultas aninhadas, ou seja, uma subconsulta dentro de outra subconsulta
- Subconsulta
NOT IN
dentro de umaOR
, por exemplo,a = 3 OR b NOT IN (SELECT c from t)
Na maioria dos casos, você pode regenerar as subconsultas
NOT IN
usandoNOT EXISTS
. Recomendamos usarNOT EXISTS
sempre que possível, poisDELETE
com as subconsultasNOT IN
pode ficar lento.
Exemplos
> 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')