Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Update mit Auswahl aus einer anderen Tabelle

Sie wollen kein fylker im UPDATE Erklärung. Sie sollten auch einen korrekten join verwenden . Die erste Umschreibung lautet also:

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
                                     );

Nehmen wir eine einzelne Übereinstimmung in fylker an , dann ist das in Ordnung. Wenn es mehrere Übereinstimmungen gibt, müssen Sie eine auswählen. Eine einfache Methode ist:

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
                                     );

Hinweis:Dadurch werden alle Unternehmen aktualisiert, die einen passenden "kommuner" haben. Wenn es kein passendes "fylker" gibt, wird der Wert auf NULL gesetzt . Ich glaube, das ist die Absicht Ihrer Frage.

Außerdem erleichtern Tabellenaliase das Schreiben und Lesen der Abfrage.