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

MySQL/SQL:Perbarui dengan subquery yang berkorelasi dari tabel yang diperbarui itu sendiri

Mengikuti dua jawaban yang saya terima (tidak ada yang lengkap jadi saya menulis sendiri), yang akhirnya saya lakukan adalah sebagai berikut:

UPDATE Table AS target
INNER JOIN 
(
select category, appearances_sum
from Table T inner join (
    select category as cat, sum(appearances) as appearances_sum
    from Table
    group by cat
) as agg
where T.category  = agg.cat
group by category
) as source
ON target.category = source.category
SET target.probability = target.appearances / source.appearances_sum 

Ia bekerja sangat cepat. Saya juga mencoba dengan subquery yang berkorelasi tetapi jauh lebih lambat (urutan besarnya), jadi saya tetap menggunakan join.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO bindParam() dan MySQL BIT

  2. Datetime di belakang satu jam setelah penyisipan. Penghematan siang hari

  3. Mysql:hapus baris dalam dua tabel dengan kunci asing

  4. Praktik terbaik untuk panjang kolom SQL varchar

  5. Wildcard dalam nama kolom untuk MySQL