Tôi có một câu hỏi chung mà tôi sẽ cố gắng giải thích bằng cách sử dụng một ví dụ.MySQL/SQL: Cập nhật với truy vấn con tương ứng từ bảng được cập nhật chính nó
Nói rằng tôi có một bảng với các lĩnh vực: "id", "tên", "thể loại", "diện mạo" và "tỷ lệ"
Ý tưởng là tôi có một số mặt hàng, từng liên quan đến một đơn loại và "xuất hiện" nhiều lần. Trường tỷ lệ phải bao gồm phần trăm số lần xuất hiện của mỗi mục trong tổng số lần xuất hiện của các mục trong danh mục.
Trong pseudo-code những gì tôi cần là như sau:
Đối với mỗi loại
tìm ra tổng số lần ra sân cho các hạng mục liên quan đến nó. Ví dụ nó có thể được thực hiện với (select sum("appearances") from table group by category
)Đối với mỗi mục
thiết lập giá trị tỷ lệ như sự xuất hiện của mục chia cho tổng tìm thấy cho hạng mục trên
Bây giờ tôi cố gắng để đạt được điều này với một truy vấn cập nhật duy nhất, nhưng dường như không thể làm điều đó. Những gì tôi nghĩ tôi nên làm là:
update Table T
set T.ratio = T.appearances/
(
select sum(S.appearances)
from Table S
where S.id = T.id
)
Nhưng MySQL không chấp nhận bí danh T trong cột cập nhật và tôi không tìm cách khác để đạt được điều này.
Bất kỳ ý tưởng nào?
Vui lòng gắn cờ câu trả lời là câu trả lời để câu hỏi này bị xóa khỏi danh sách câu hỏi chưa được trả lời :) –
@Frans: Tôi phải chờ 48 giờ trước khi tôi có thể làm như vậy, quy tắc ngăn xếp chồng chéo :) –
Rất tốt. Cảm ơn bạn đã dành thời gian để cung cấp một ví dụ đầy đủ! – Ben