selectステートメントによって返されるセット内のfield1、field2、およびfield3が含まれるテーブルを更新することを意味しますか?
例えば。
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
更新により、1000行をはるかに超える行が更新される可能性があることに注意してください。
一時テーブルも使用できます:
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
これには、temptabを後で使用できるという利点があります。また、インデックスを追加して更新を高速化できるという利点もあります。
create index on temptab (field1, field2, field3);