sql >> Databasteknik >  >> RDS >> Mysql

MySQL-uppdatering med välj från en annan tabell

Du vill inte ha fylker i UPDATE påstående. Du bör också använda en korrekt join . Så den första omskrivningen är:

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

Om vi ​​antar en enda matchning i fylker , då är det bra. Om det finns flera matchningar måste du välja en. En enkel metod är:

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

Obs:Detta kommer att uppdatera alla företag som har en matchande "kommuner". Om det inte finns någon matchande "fylker" kommer värdet att sättas till NULL . Jag tror att det är meningen med din fråga.

Tabellalias gör också frågan lättare att skriva och läsa.



  1. Problem med Oracle-bindningsvariabler som inte använder index korrekt

  2. Databasserverhårdtrender

  3. Introducerar ny funktion - Spotlight Cloud Database Growth Report

  4. Ta reda på var MySQL är installerat på Mac OS X