fylkerは必要ありません UPDATEで 声明。また、適切なjoinを使用する必要があります 。したがって、最初の書き直しは次のとおりです。
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
);
fylkerで単一の一致を想定した場合 、それならこれで結構です。複数の一致がある場合は、1つを選択する必要があります。簡単な方法は次のとおりです。
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
);
注:これにより、「kommuner」が一致するすべての企業が更新されます。一致する「fylker」がない場合、値はNULLに設定されます 。これがあなたの質問の意図だと思います。
また、テーブルエイリアスを使用すると、クエリの書き込みと読み取りが簡単になります。