Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL - как да актуализирате поле за всички елементи, произтичащи от група чрез оператор select

Искате да кажете, че искате да актуализирате таблица, където поле1, поле2 и поле3 са в набора, върнат от вашия оператор select?

напр.

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

Имайте предвид, че актуализацията може да актуализира много повече от 1000 реда.

Може да се използва и временна таблица:

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

Това има предимството, че temptab може да се използва по-късно, както и че могат да се добавят индекси за ускоряване на актуализацията:

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. MySQL Workbench - Пренасочващо инженерство - Грешка 1005:Не може да се създаде таблица (errno:150)

  2. BIGINT mysql производителност в сравнение с INT

  3. Нуждаете се от малко обяснение на PHP PDO....!

  4. Грешка за отказан достъп при използване на mysql_real_escape_string()

  5. Мониторинг и управление на операциите на MySQL 8.0 с ClusterControl