Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mise à jour MySQL avec sélection d'une autre table

Vous ne voulez pas fylker dans la UPDATE déclaration. Vous devez également utiliser un join approprié . Donc la première réécriture est :

UPDATE companies c JOIN
       kommuner k
       ON c.forretningsadresse_kommune = k.kommuneNavn
    SET c.forretningsadresse_fylke = (SELECT f.fylkeNavn 
                                      FROM fylker f
                                      WHERE f.fylkeID = k.fylkeID
                                     );

Si nous supposons une seule correspondance dans fylker , alors c'est bien. S'il y a plusieurs correspondances, vous devez en choisir une. Une méthode simple est :

UPDATE companies c JOIN
       kommuner k
       ON c.forretningsadresse_kommune = k.kommuneNavn
    SET c.forretningsadresse_fylke = (SELECT f.fylkeNavn 
                                      FROM fylker f
                                      WHERE f.fylkeID = k.fylkeID
                                      LIMIT 1
                                     );

Remarque :Cela mettra à jour toutes les entreprises qui ont un « kommuner » correspondant. S'il n'y a pas de "fylker" correspondant, la valeur sera définie sur NULL . Je crois que c'est l'intention de votre question.

De plus, les alias de table facilitent l'écriture et la lecture de la requête.