MySQL: Mettre à jour le champ d'une table en fonction d'un champ d'une autre table
L'exemple suivant permet de mettre à jour le champ nom_region de la table codes_postaux à partir du champ nom_region de la table departements
UPDATE
codes_postaux c
SET
c.nom_region = (
SELECT
d2.nom_region
FROM
departements d2
WHERE
d2.code_departement = LEFT(c.Postcode_from,
2))
WHERE
EXISTS (
SELECT
1
FROM
departements d1
WHERE
d1.code_departement = LEFT(c.Postcode_from,
2) )
AND c.Country_name = 'FRANCE'
Ceci grâce principalement au mot clé EXISTS
Personnellement, je trouve que cette syntaxe est beaucoup plus rapide que certaines autres trouvées sur internet comme par exemple avec une jointure avec la table source entre le UPDATE et le SET
UPDATE table1 AS b
INNER JOIN table2 AS g ON b.champ1= g.champ1
SET b.champ2= g.champ2
WHERE (b.champ2= '' or b.champ2= 0) and
g.champ2 > 0
Ajouter un commentaire