sql >> Database >  >> RDS >> Mysql

Update een MySQL-tabel met waarden van een andere

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

Dat zou het moeten doen, en het doet echt precies wat de jouwe is. Ik geef echter de voorkeur aan 'JOIN'-syntaxis voor joins in plaats van meerdere 'WHERE'-voorwaarden, ik denk dat het gemakkelijker te lezen is

Wat betreft langzaam werken, hoe groot zijn de tafels? Je zou indexen moeten hebben op tobeupdated.value en original.value

EDIT:we kunnen de zoekopdracht ook vereenvoudigen

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

USING is een afkorting wanneer beide tabellen van een join een identieke naam hebben met de naam key zoals id . dat wil zeggen een equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join



  1. Hoe voeg ik een bestand in Oracle Database in?

  2. Metagegevens met betrekking tot recordtypen op PL/SQL-pakketniveau

  3. Hoe splits ik een string zodat ik toegang heb tot item x?

  4. Postgres-dump van alleen delen van tabellen voor een dev-snapshot