Tôi thực hiện loại truy vấn này theo cách sau:
SELECT COUNT(DISTINCT t1.userid) AS user_count
FROM TRANSACTIONS t1
JOIN TRANSACTIONS t2 USING (userid)
WHERE t1.product_id = 'prod1'
AND t2.product_id = 'prod2';
GROUP BY
giải pháp hiển thị
của @najmeddine cũng tạo ra câu trả lời bạn muốn, nhưng nó không hoạt động tốt trên MySQL. MySQL gặp khó khăn khi tối ưu hóa GROUP BY
truy vấn.
Bạn nên thử cả hai truy vấn, phân tích tối ưu hóa bằng EXPLAIN
và cũng chạy một số kiểm tra và tính thời gian cho kết quả dựa trên khối lượng dữ liệu trong cơ sở dữ liệu của bạn.