Đây là một cách tiếp cận hiệu quả, không sử dụng truy vấn phụ nào cả. Bạn có thể chỉ cần lọc ra các kết quả trong Having
mệnh đề, sử dụng kết hợp có điều kiện:
SELECT
conversation_id
FROM assoc_user__conversation
GROUP BY conversation_id
HAVING
-- all the rows to exists only for 1000001 or 1000002 only
SUM(user_id IN (1000001, 1000002)) = COUNT(*)
Kết quả
| conversation_id |
| --------------- |
| 10 |
Một biến thể khác của tập hợp có điều kiện có thể là:
SELECT
conversation_id
FROM assoc_user__conversation
GROUP BY conversation_id
HAVING
-- atleast one row for 1000001 to exists
SUM(user_id = 1000001) AND
-- atleast one row for 1000002 to exists
SUM(user_id = 1000002) AND
-- no row to exist for other user_id values
NOT SUM(user_id NOT IN (1000001, 1000002))