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:
- Encontrando pedidos incompletos
:desempenho de
LEFT JOIN
comparado comNOT IN
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.