Meinen Sie damit, dass Sie die Tabelle aktualisieren möchten, in der sich field1, field2 und field3 in dem Satz befinden, der von Ihrer select-Anweisung zurückgegeben wird?
z.B.
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
Beachten Sie, dass das Update möglicherweise weit mehr als 1000 Zeilen aktualisiert.
Eine temporäre Tabelle könnte auch verwendet werden:
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
Das hat den Vorteil, dass später temptab verwendet werden kann, und auch, dass Indexe hinzugefügt werden können, um die Aktualisierung zu beschleunigen:
create index on temptab (field1, field2, field3);