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
Etiquettes: 

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.