UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
Observera att för en SELECT
det skulle vara mer effektivt att använda NOT IN
/ NOT EXISTS
syntax:
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
Se artikeln i min blogg för information om prestanda:
- Hittar ofullständiga beställningar
:prestanda för
LEFT JOIN
jämfört medNOT IN
Tyvärr, MySQL
tillåter inte användning av måltabellen i en underfråga i en UPDATE
uttalande, det är därför du måste hålla dig till mindre effektiva LEFT JOIN
syntax.