Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MYSQL - jak zaktualizować pole dla wszystkich pozycji wynikających z grupy za pomocą instrukcji select

Czy masz na myśli, że chcesz zaktualizować tabelę, w której field1, field2 i field3 znajdują się w zestawie zwracanym przez instrukcję SELECT ?

np.

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

Pamiętaj, że aktualizacja może zaktualizować o wiele więcej niż 1000 wierszy.

Można również użyć tabeli tymczasowej:

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

Ma to tę zaletę, że temptab może być używany później, a także, że można dodać indeksy w celu przyspieszenia aktualizacji:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. utwórz URL rest api, aby połączyć się z bazą danych mysql

  2. Kiedy dodać indeks do pola tabeli SQL (MySQL)?

  3. Ustawienie strony Django/MySQL do używania UTF-8

  4. Jak zmienić wartość innodb_buffer_pool_size w MySQL na Mac OS?

  5. Zapytanie MySQL - uzyskiwanie brakujących rekordów podczas korzystania z grupowania