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
に設定されます 。これがあなたの質問の意図だと思います。
また、テーブルエイリアスを使用すると、クエリの書き込みと読み取りが簡単になります。