UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
Perhatikan bahwa untuk SELECT
akan lebih efisien menggunakan NOT IN
/ NOT EXISTS
sintaks:
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
Lihat artikel di blog saya untuk detail performa:
- Menemukan pesanan yang belum selesai
:kinerja
LEFT JOIN
dibandingkan denganNOT IN
Sayangnya, MySQL
tidak mengizinkan penggunaan tabel target dalam subkueri dalam UPDATE
pernyataan, itu sebabnya Anda harus tetap menggunakan LEFT JOIN
yang kurang efisien sintaks.