sql >> Database >  >> RDS >> Mysql

MySQL-update met selectie uit een andere tabel

Je wilt geen fylker in de UPDATE uitspraak. Je zou ook een goede join moeten gebruiken . Dus de eerste herschrijving is:

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
                                     );

Als we uitgaan van een enkele overeenkomst in fylker , dan is dit goed. Als er meerdere overeenkomsten zijn, moet u er een kiezen. Een eenvoudige methode is:

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
                                     );

Opmerking:hiermee worden alle bedrijven bijgewerkt die een overeenkomende "kommuner" hebben. Als er geen overeenkomende "fylker" is, wordt de waarde ingesteld op NULL . Ik denk dat dit de bedoeling van uw vraag is.

Tabelaliassen maken de query ook gemakkelijker om te schrijven en te lezen.



  1. 4 manieren om de definitie van een weergave te krijgen met Transact-SQL

  2. Django JSONVeldfiltering

  3. php artisan migreren gooien [BOB-uitzondering] Kon stuurprogramma niet vinden - Laravel gebruiken

  4. Hoe de datum uit een string in Oracle te halen