UPDATE
S’applique à : Databricks SQL Databricks Runtime
Met à jour les valeurs de colonne pour les lignes qui correspondent à un prédicat. Quand aucun prédicat n’est fourni, met à jour les valeurs de colonne pour toutes les lignes.
Cette instruction est uniquement prise en charge pour les tables Delta Lake.
Syntaxe
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
Paramètres
-
Identifie la table à mettre à jour. Le nom de la table ne doit pas utiliser une spécification temporelle ou une spécification d’options.
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.
-
Référence à une colonne dans la table. Vous pouvez référencer chaque colonne au maximum une fois.
-
Référence à un champ dans une colonne de type STRUCT. Vous pouvez référencer chaque champ au maximum une fois.
-
Expression arbitraire. Si vous référencez des colonnes
table_name
, elles représentent l’état de la ligne avant la mise à jour. DEFAULT
S’applique à : Databricks SQL Databricks Runtime 11.3 LTS et versions ultérieures
Expression
DEFAULT
de la colonne si une colonne est définie ; sinon, NULL.-
Filtrez les lignes par prédicat. La clause
WHERE
peut inclure des sous-requêtes avec les exceptions suivantes :- 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
à l’aide deNOT EXISTS
. Dans la mesure du possible, vous devez utiliserNOT EXISTS
, carUPDATE
avec des sous-requêtesNOT IN
peut être lent.
Exemples
> UPDATE events SET eventType = 'click' WHERE eventType = 'clk'
> UPDATE all_events
SET session_time = 0, ignored = true
WHERE session_time < (SELECT min(session_time) FROM good_events)
> UPDATE orders AS t1
SET order_status = 'returned'
WHERE EXISTS (SELECT oid FROM returned_orders WHERE t1.oid = oid)
> UPDATE events
SET category = 'undefined'
WHERE category NOT IN (SELECT category FROM events2 WHERE date > '2001-01-01')
> UPDATE events
SET ignored = DEFAULT
WHERE eventType = 'unknown'