Recherche…


Syntaxe

  • Table de mise à jour
    SET nom_colonne = valeur , nom_colonne2 = valeur_2 , ..., nom_colonne_n = valeur_n
    WHERE condition ( opérateur logique condition_n)

Mise à jour de toutes les lignes

Cet exemple utilise la table Cars de l'exemple de base de données.

UPDATE Cars
SET Status = 'READY'

Cette instruction définit la colonne 'status' de toutes les lignes de la table 'Cars' sur "READY" car elle ne contient pas de clause WHERE pour filtrer le jeu de lignes.

Mise à jour des lignes spécifiées

Cet exemple utilise la table Cars de l'exemple de base de données.

UPDATE 
    Cars
SET 
    Status = 'READY'
WHERE 
    Id = 4

Cette instruction définira le statut de la ligne de 'Cars' avec l'ID 4 sur "READY".

WHERE clause WHERE contient une expression logique qui est évaluée pour chaque ligne. Si une ligne remplit les critères, sa valeur est mise à jour. Sinon, une ligne reste inchangée.

Modification des valeurs existantes

Cet exemple utilise la table Cars de l'exemple de base de données.

UPDATE Cars
SET TotalCost = TotalCost + 100
WHERE Id = 3 or Id = 4

Les opérations de mise à jour peuvent inclure des valeurs actuelles dans la ligne mise à jour. Dans cet exemple simple, TotalCost est incrémenté de 100 pour deux lignes:

  • Le TotalCost de la voiture n ° 3 passe de 100 à 200
  • Le TotalCost de la voiture n ° 4 est passé de 1254 à 1354

La nouvelle valeur d'une colonne peut être dérivée de sa valeur précédente ou de toute autre valeur de colonne dans la même table ou une table jointe.

MISE À JOUR avec des données d'une autre table

Les exemples ci-dessous PhoneNumber un PhoneNumber de PhoneNumber pour tout employé qui est également Customer et pour lequel aucun numéro de téléphone n'est actuellement défini dans la table Employees .

(Ces exemples utilisent les tables Employees et Customers des exemples de bases de données.)

SQL standard

Mettre à jour en utilisant une sous-requête corrélée:

UPDATE 
    Employees
SET PhoneNumber =
    (SELECT 
         c.PhoneNumber
     FROM 
         Customers c
     WHERE 
         c.FName = Employees.FName 
         AND c.LName = Employees.LName)
WHERE Employees.PhoneNumber IS NULL

SQL: 2003

Mettre à jour en utilisant MERGE :

MERGE INTO 
    Employees e
USING 
    Customers c 
ON 
    e.FName = c.Fname 
    AND e.LName = c.LName
    AND e.PhoneNumber IS NULL
WHEN MATCHED THEN
   UPDATE 
      SET PhoneNumber = c.PhoneNumber

serveur SQL

Mettre à jour avec INNER JOIN :

UPDATE 
    Employees
SET 
    PhoneNumber = c.PhoneNumber
FROM 
    Employees e
INNER JOIN Customers c
        ON e.FName = c.FName 
        AND e.LName = c.LName
WHERE 
    PhoneNumber IS NULL

Capture des enregistrements mis à jour

Parfois, on veut capturer les enregistrements qui viennent d'être mis à jour.

CREATE TABLE #TempUpdated(ID INT)

Update TableName SET Col1 = 42
    OUTPUT inserted.ID INTO #TempUpdated
    WHERE Id > 50


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow