sql >> Databáze >  >> RDS >> Mysql

Aktualizace MySQL s výběrem z jiné tabulky

Nechcete fylker v UPDATE prohlášení. Měli byste také používat správné join . Takže první přepsání je:

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

Pokud předpokládáme jedinou shodu v fylker , tak to je v pohodě. Pokud existuje více shod, musíte vybrat jednu. Jednoduchá metoda je:

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

Poznámka:Toto aktualizuje všechny společnosti, které mají odpovídající „kommuner“. Pokud neexistuje žádný odpovídající "fylker", hodnota bude nastavena na NULL . Věřím, že toto je záměr vaší otázky.

Také aliasy tabulek usnadňují psaní a čtení dotazu.



  1. Co je logický operátor AND v SQL Server - SQL Server / TSQL výukový program, část 120

  2. ExecuteNonQuery:Vlastnost připojení nebyla inicializována.

  3. Mechanismus, který Oracle sleduje, když bereme horké zálohy

  4. Dotaz k nalezení a odstranění duplicitních dat z tabulky MYSql