Partager via


DELETE FROM

S’applique à : case marquée oui Databricks SQL case marquée oui Databricks Runtime

Supprime les lignes qui correspondent à un prédicat. Si aucun prédicat n’est fourni, toutes les lignes sont supprimées.

Cette instruction est uniquement prise en charge pour les tables Delta Lake.

Syntaxe

DELETE FROM table_name [table_alias] [WHERE predicate]

Paramètres

  • table_name

    Identifie une table existante. Le nom ne doit pas inclure une spécification temporelle.

    table_name ne doit pas être une table source contenant une clé étrangère.

  • table_alias

    Définissez un alias pour la table. L’alias ne doit pas inclure une liste de colonnes.

  • WHERE

    Filtrez les lignes par prédicat.

    Le prédicat WHERE prend en charge les sous-requêtes, notamment IN, NOT IN, EXISTS, NOT EXISTS et les sous-requêtes scalaires. Les types de sous-requêtes suivants ne sont pas pris en charge :

    • Sous-requêtes imbriquées, à savoir une sous-requête à l’intérieur d’une autre sous-requête
    • Une sous-requête NOT IN à l’intérieur d’un OR, par exemple, a = 3 OR b NOT IN (SELECT c from t)

    Dans la plupart des cas, vous pouvez réécrire des sous-requêtes NOT IN avec NOT EXISTS. Dans la mesure du possible, nous vous recommandons d'utiliser NOT EXISTS, car DELETE avec des sous-requêtes NOT IN peut être lent.

Exemples

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