Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL - cara memperbarui bidang untuk semua item yang dihasilkan dari grup dengan pernyataan pilih

Apakah maksud Anda bahwa Anda ingin memperbarui tabel di mana field1, field2, dan field3 berada di set yang dikembalikan oleh pernyataan pilih Anda?

misalnya.

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

Perhatikan bahwa pembaruan mungkin memperbarui lebih dari 1000 baris.

Tabel sementara juga dapat digunakan:

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

Ini memiliki keuntungan bahwa temptab dapat digunakan nanti, dan juga bahwa indeks dapat ditambahkan untuk mempercepat pembaruan:

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. Tetapkan nilai input pada opsi pilih di php

  2. android listview update/refresh data tanpa menutup aplikasi

  3. Salin massal DataTable ke MySQL (mirip dengan System.Data.SqlClient.SqlBulkCopy)

  4. Aplikasi OpenShift tidak dapat terhubung ke MySQL:JDBCConnectionException:Tidak dapat membuka koneksi

  5. Menemukan pesan terbaru dari tabel, dikelompokkan berdasarkan pengguna di mysql