sql >> データベース >  >> RDS >> Mysql

別のテーブルから選択してMySQLを更新

    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に設定されます 。これがあなたの質問の意図だと思います。

    また、テーブルエイリアスを使用すると、クエリの書き込みと読み取りが簡単になります。



    1. MySQL:グループでTIMEDIFF()をSUM()する方法は?

    2. 同じフィールド名のMYSQL行を選択し、プレフィックスを追加する

    3. データベースから読み取ったオプションメニューを選択し、その値を使用します

    4. ウェビナー:PostgreSQL11の新機能[フォローアップ]