Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Atualização do MySQL com seleção de outra tabela


Você não quer fylker no UPDATE demonstração. Você também deve usar um join adequado . Então a primeira reescrita é:
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
                                     );

Se assumirmos uma única correspondência em fylker , então isso é bom. Se houver várias correspondências, você precisará escolher uma. Um método simples é:
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
                                     );

Observação:isso atualizará todas as empresas que tiverem um "kommuner" correspondente. Se não houver "fylker" correspondente, o valor será definido como NULL . Acredito que esta seja a intenção da sua pergunta.

Além disso, os aliases de tabela facilitam a escrita e a leitura da consulta.