Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aktualisieren Sie eine MySQL-Tabelle mit Werten aus einer anderen

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

Das sollte es tun, und es tut wirklich genau das, was Ihres ist. Ich bevorzuge jedoch die 'JOIN'-Syntax für Joins gegenüber mehreren 'WHERE'-Bedingungen, ich denke, es ist einfacher zu lesen

Wie groß sind die Tische, um langsam zu laufen? Sie sollten Indizes auf tobeupdated.value haben und original.value

BEARBEITEN:Wir können die Abfrage auch vereinfachen

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

USING ist eine Kurzform, wenn beide Tabellen eines Joins einen identisch benannten key haben wie id . dh ein Equi-Join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join