Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

UPDATE várias tabelas no MySQL usando LEFT JOIN

UPDATE  t1
LEFT JOIN
        t2
ON      t2.id = t1.id
SET     t1.col1 = newvalue
WHERE   t2.id IS NULL

Observe que para um SELECT seria mais eficiente usar NOT IN / NOT EXISTS sintaxe:
SELECT  t1.*
FROM    t1
WHERE   t1.id NOT IN
        (
        SELECT  id
        FROM    t2
        )

Veja o artigo no meu blog para detalhes de desempenho:

Infelizmente, MySQL não permite usar a tabela de destino em uma subconsulta em um UPDATE declaração, é por isso que você precisará usar LEFT JOIN menos eficiente sintaxe.