Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL / SQL:Cập nhật với truy vấn con tương quan từ chính bảng đã cập nhật

Sau hai câu trả lời mà tôi nhận được (không câu nào hoàn chỉnh nên tôi đã viết câu trả lời của riêng mình), những gì cuối cùng tôi đã làm là như sau:

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 

Nó hoạt động rất nhanh chóng. Tôi cũng đã thử với truy vấn con tương quan nhưng nó chậm hơn nhiều (đơn hàng có độ lớn), vì vậy tôi đang gắn bó với phép nối.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để CHỌN các hàng có MAX (Giá trị cột), PHẦN CỦA một cột khác trong MYSQL?

  2. CHÈN với CHỌN

  3. UTF-8 MySQL và Charset

  4. Bản sao liên quan đến SUM, LEFT JOIN và GROUP BY

  5. Pymysql Cursor.fetchall () / Fetchone () Trả về Không có