UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
Bemærk, at for en SELECT
det ville være mere effektivt at bruge NOT IN
/ NOT EXISTS
syntaks:
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
Se artiklen i min blog for detaljer om ydeevne:
- Sådan finder du ufuldstændige ordrer
:ydeevne af
LEFT JOIN
sammenlignet medNOT IN
Desværre, MySQL
tillader ikke brug af måltabellen i en underforespørgsel i en UPDATE
erklæring, det er derfor, du bliver nødt til at holde dig til mindre effektive LEFT JOIN
syntaks.