UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
Merk op dat voor een SELECT het zou efficiënter zijn om NOT IN . te gebruiken / NOT EXISTS syntaxis:
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
Zie het artikel in mijn blog voor prestatiedetails:
- Onvolledige bestellingen vinden
:uitvoering van
LEFT JOINvergeleken metNOT IN
Helaas, MySQL staat het gebruik van de doeltabel niet toe in een subquery in een UPDATE verklaring, daarom moet je je houden aan minder efficiënte LEFT JOIN syntaxis.