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.