Tôi đang làm việc với một bảng (kết quả) có cơ cấu như sau (đừng hỏi, tôi không xây dựng nó)MySql CẬP NHẬT với SUM trong cùng một bảng
id | record_type | user_id | answer_id | choice | score | total | email
-------------------------------------------------------------------------------
1 email xxxxxxx 0 [email protected]
2 answer xxxxxxx aaaaaa A 0
3 answer xxxxxxx bbbbbb A 0
4 answer xxxxxxx cccccc B 10
5 email yyyyyyy 0 [email protected]
6 answer yyyyyyy aaaaaa A 0
7 answer yyyyyyy bbbbbb A 0
8 answer yyyyyyy cccccc A 0
9 email zzzzzzz 0 [email protected]
10 answer zzzzzzz aaaaaa A 0
11 answer zzzzzzz bbbbbb A 0
12 answer zzzzzzz cccccc B 10
Đó là một cuộc khảo sát và giá trị điểm của các câu trả lời chính xác đã thay đổi sau khi các cuộc điều tra đã được gửi. Tôi đã chạy bản cập nhật để đặt giá trị điểm cho câu trả lời "đúng" thành 10 và bây giờ tôi cần cập nhật tổng số cho các hàng có record_type: email để chúng tôi có thể liên hệ với người chiến thắng.
Mục tiêu sẽ được thiết lập tổng cột cho các hàng 1,5 và 9 là 10,0 và 10
Tôi đang nghĩ đến một cái gì đó như thế này
UPDATE results SET total = SUM(score)
FROM results GROUP BY user_id WHERE user_id = user_id
Nhưng điều đó không' Tôi nhìn đúng và tôi lo lắng rằng tôi có thể đi sai đường.
hoạt động. Rất đẹp. Cảm ơn bạn. – byron
Câu hỏi dành cho các bạn ... Tôi đang chạy bảng này với ~ 400 nghìn hàng và nó đang bị lỗi (có thể hết bộ nhớ). Bất kỳ đề xuất để giải quyết? Giống như, một cách để chạy truy vấn theo khối? – byron
Điều này có thể trông "phức tạp" nhưng thực sự dễ thực hiện và hoạt động như một giấc mơ (bạn cần một chỉ mục duy nhất, tôi phải tạo một chỉ số cho yêu cầu của mình) – zzapper