sql >> Base de Datos >  >> RDS >> Mysql

Actualización de MySQL con selección de otra tabla

No quieres fylker en el UPDATE declaración. También debería usar un join adecuado . Así que la primera reescritura es:

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 asumimos una sola coincidencia en fylker , entonces esto está bien. Si hay varias coincidencias, debe elegir una. Un método simple es:

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

Nota:Esto actualizará todas las empresas que tengan un "kommuner" coincidente. Si no hay ningún "fylker" coincidente, el valor se establecerá en NULL . Creo que esta es la intención de su pregunta.

Además, los alias de tabla facilitan la escritura y lectura de la consulta.