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

Aktualizujte jednu tabulku MySQL hodnotami z jiné

UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id

To by mělo stačit a opravdu to dělá přesně to, co vy. Dávám však přednost syntaxi 'JOIN' pro spojení spíše než vícenásobným podmínkám 'WHERE', myslím, že je to snazší číst

Co se týče pomalého běhu, jak velké jsou stoly? Měli byste mít indexy na tobeupdated.value a original.value

EDIT:můžeme také zjednodušit dotaz

UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id

USING je zkratka, když obě tabulky spojení mají identický pojmenovaný key například id . tj. equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join



  1. jak nastavit sloupec automatického přírůstku pomocí vývojáře sql

  2. Příklady YEARWEEK() – MySQL

  3. ORA-03135 – RMAN Duplikát

  4. funkce velkého celého čísla