UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
Notez que pour un SELECT
il serait plus efficace d'utiliser NOT IN
/ NOT EXISTS
syntaxe :
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
Voir l'article de mon blog pour plus de détails sur les performances :
- Rechercher des commandes incomplètes
:performances de
LEFT JOIN
par rapport àNOT IN
Malheureusement, MySQL
ne permet pas d'utiliser la table cible dans une sous-requête dans un UPDATE
déclaration, c'est pourquoi vous devrez vous en tenir à moins efficace LEFT JOIN
syntaxe.