Compartilhar via


DELETE FROM

Aplica-se a:marca de seleção positiva Databricks SQL marca de seleção positiva Databricks Runtime

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

  • table_name

    Identifica uma tabela existente. O nome não deve incluir uma especificação temporal.

    A table_name não deve ser uma tabela estrangeira.

  • table_alias

    Define um alias para a tabela. O alias não deve incluir uma lista de colunas.

  • WHERE

    Filtra as linhas por predicado.

    O predicado WHERE dá suporte a subconsultas, incluindo as subconsultas IN, 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 uma OR, por exemplo, a = 3 OR b NOT IN (SELECT c from t)

    Na maioria dos casos, você pode regenerar as subconsultas NOT IN usando NOT EXISTS. Recomendamos usar NOT EXISTS sempre que possível, pois DELETE com as subconsultas NOT 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')