DELETE FROM
S’applique à : Databricks SQL 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
-
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. -
Définissez un alias pour la table. L’alias ne doit pas inclure une liste de colonnes.
-
Filtrez les lignes par prédicat.
Le prédicat
WHERE
prend en charge les sous-requêtes, notammentIN
,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’unOR
, 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
avecNOT EXISTS
. Dans la mesure du possible, nous vous recommandons d'utiliserNOT EXISTS
, carDELETE
avec des sous-requêtesNOT 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')