Mysql
 sql >> Base de données >  >> RDS >> Mysql

METTRE À JOUR plusieurs tables dans MySQL en utilisant LEFT JOIN

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 :

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.