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

Aggiornamento MySQL con selezione da un'altra tabella

Non vuoi fylker nel UPDATE dichiarazione. Dovresti anche usare un join appropriato . Quindi la prima riscrittura è:

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

Se assumiamo una singola corrispondenza in fylker , allora va bene. Se ci sono più corrispondenze, devi sceglierne una. Un metodo semplice è:

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

Nota:questo aggiornerà tutte le società che hanno un "kommuner" corrispondente. Se non ci sono "fylker" corrispondenti, il valore sarà impostato su NULL . Credo che questo sia l'intento della tua domanda.

Inoltre, gli alias di tabella semplificano la scrittura e la lettura della query.