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