sql >> Database teknologi >  >> RDS >> Mysql

MYSQL - hvordan man opdaterer et felt for alle elementer, der er et resultat af gruppe-efter-valg-sætning

Mener du, at du vil opdatere tabel, hvor felt1, felt2 og felt3 er i det sæt, der returneres af din select-sætning?

for eksempel.

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

Bemærk, at opdateringen muligvis opdaterer mange flere end 1000 rækker.

En midlertidig tabel kunne også bruges:

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

Dette har den fordel, at temptab kan bruges senere, og også at indekser kan tilføjes for at fremskynde opdateringen:

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


  1. Søg i alle kolonner i en tabel ved hjælp af en enkelt where-betingelse med et enkelt søgeord i mysql

  2. Bestil ved at bruge polske bogstaver

  3. mysql-python installationsfejl:Kan ikke åbne inkludere filen 'config-win.h'

  4. Fejl:ORA-01704:streng for lang