Đây là một giải pháp. Trước tiên, hãy giảm tập hợp thành các hàng riêng biệt trong bảng dẫn xuất, sau đó áp dụng GROUP BY cho kết quả đó:
SELECT SUM(case when d.status = 2 then d.value end) as 'val_accepted'
FROM (
SELECT DISTINCT p.id, p.status, p.value, pc.library_id
FROM props p
INNER JOIN p_contents AS pc ON p.id = pc.prop_id
INNER JOIN contents AS c ON c.id = pc.library_id
WHERE p.account_id = 3) AS d
GROUP BY d.library_id
Bạn sử dụng DISTINCT(pc.library_id)
trong ví dụ của bạn, như thể DISTINCT chỉ áp dụng cho cột bên trong dấu ngoặc đơn. Đây là một quan niệm sai lầm phổ biến. DISTINCT áp dụng cho tất cả các cột của danh sách chọn. DISTINCT không phải là một hàm; nó là một công cụ sửa đổi truy vấn.