UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
Lưu ý rằng đối với một SELECT
sẽ hiệu quả hơn nếu sử dụng NOT IN
/ NOT EXISTS
cú pháp:
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
Xem bài viết trong blog của tôi để biết chi tiết về hiệu suất:
- Tìm đơn đặt hàng chưa hoàn thành
:hiệu suất của
LEFT JOIN
so vớiNOT IN
Thật không may, MySQL
không cho phép sử dụng bảng đích trong truy vấn con trong UPDATE
, đó là lý do tại sao bạn cần sử dụng LEFT JOIN
kém hiệu quả hơn cú pháp.