DELETE FROM
Aplica-se a: Databricks SQL Databricks Runtime
Exclui as linhas que correspondem a um predicado. Quando nenhum predicado é fornecido, exclui todas as linhas.
Esta instrução só é suportada para tabelas 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.
table_name
não deve ser uma mesa estrangeira. -
Defina um alias para a tabela. O alias não deve incluir uma lista de colunas.
-
Filtrar linhas por predicado.
O
WHERE
predicado suporta subconsultas, incluindoIN
,NOT IN
,EXISTS
,NOT EXISTS
e subconsultas escalares. Os seguintes tipos de subconsultas não são suportados:- Subconsultas aninhadas, ou seja, uma subconsulta dentro de outra subconsulta
-
NOT IN
subconsulta dentro de umOR
, por exemplo,a = 3 OR b NOT IN (SELECT c from t)
Na maioria dos casos, você pode reescrever
NOT IN
subconsultas usandoNOT EXISTS
o . Recomendamos o usoNOT EXISTS
sempre que possível, poisDELETE
NOT IN
as subconsultas podem ser lentas.
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')