UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
Nota che per un SELECT sarebbe più efficiente usare NOT IN / NOT EXISTS sintassi:
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
Vedi l'articolo nel mio blog per i dettagli sulle prestazioni:
- Trovare ordini incompleti
:esecuzione di
LEFT JOINrispetto aNOT IN
Sfortunatamente, MySQL non consente di utilizzare la tabella di destinazione in una sottoquery in un UPDATE dichiarazione, ecco perché dovrai attenerti a LEFT JOIN meno efficiente sintassi.