Ý của bạn là bạn muốn cập nhật bảng trong đó field1, field2 và field3 nằm trong tập hợp được trả về bởi câu lệnh select của bạn?
ví dụ.
update table,
( select field1, field2, field3
FROM table WHERE field1= 5 AND field_flag =1
GROUP BY field1, field2, field3 limit 1000 ) temp
set table.field_flag = 99
where table.field1=temp.field1 and table.field2=temp.field2 and table.field3 = temp.field3
Lưu ý rằng bản cập nhật có thể cập nhật nhiều hơn 1000 hàng.
Một bảng tạm thời cũng có thể được sử dụng:
create temporary table temptab as
select field1, field2, field3
FROM table WHERE field1= 5 AND field_flag =1
GROUP BY field1, field2, field3 limit 1000
update table,
temptab temp
set table.field_flag = 99
where table.field1=temp.field1 and table.field2=temp.field2 and table.field3 = temp.field3
Điều này có lợi thế là sau này có thể sử dụng cám dỗ và các chỉ mục cũng có thể được thêm vào để tăng tốc cập nhật:
create index on temptab (field1, field2, field3);