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 JOIN
rispetto 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.