sql >> Databáze >  >> RDS >> Mysql

MYSQL - jak aktualizovat pole pro všechny položky vyplývající ze skupiny příkazem select

Máte na mysli, že chcete aktualizovat tabulku, kde jsou pole1, pole2 a pole3 v sadě vrácené vaším příkazem select?

např.

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

Upozorňujeme, že aktualizace může aktualizovat mnohem více než 1000 řádků.

Lze také použít dočasnou tabulku:

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

To má tu výhodu, že temptab lze použít později a také to, že lze přidat indexy pro urychlení aktualizace:

create index on temptab (field1, field2, field3);


  1. Jak provedu GROUP BY na aliasovém sloupci na serveru MS-SQL?

  2. Mysql fulltextové booleovské vyhledávání - řazení podle relevance a ještě jedno pole

  3. Mysql:Aktualizujte pole nejnovějšího záznamu

  4. PHP – Upozornění:Nedefinovaný index: