¿Quiere decir que desea actualizar la tabla donde el campo 1, el campo 2 y el campo 3 están en el conjunto devuelto por su declaración de selección?
p.ej.
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
Tenga en cuenta que la actualización podría actualizar muchas más de 1000 filas.
También se podría usar una tabla temporal:
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
Esto tiene la ventaja de que temptab se puede usar más tarde, y también que se pueden agregar índices para acelerar la actualización:
create index on temptab (field1, field2, field3);