sql >> Database teknologi >  >> RDS >> Mysql

MySQL-opdatering med vælg fra en anden tabel

Du vil ikke have fylker i UPDATE udmelding. Du bør også bruge en korrekt join . Så den første omskrivning er:

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

Hvis vi antager et enkelt match i fylker , så er det fint. Hvis der er flere kampe, skal du vælge én. En simpel metode er:

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

Bemærk:Dette vil opdatere alle virksomheder, der har en matchende "kommuner". Hvis der ikke er nogen matchende "fylker" vil værdien blive sat til NULL . Jeg tror, ​​det er hensigten med dit spørgsmål.

Tabelaliasser gør også forespørgslen nemmere at skrive og læse.



  1. Node.js MySQL har brug for vedvarende forbindelse

  2. Når et script udføres på SQLPlus, udskriver det en sekvens af tal i stedet for output

  3. Hvad er sekventielle vs. parallelle streams i Java?

  4. Tjek, om RPC Out er aktiveret på en forbundet server