Nếu không có bất kỳ ràng buộc duy nhất nào, hãy thử:
SELECT post_id
FROM tags
WHERE tag_id = 1 OR tag_id = 3
GROUP BY post_id
HAVING count(DISTINCT tag_id) = 2;
Hoặc sử dụng HAVING
này mệnh đề, nếu cố gắng chỉ phát hiện hai tag_id
giá trị:
HAVING MIN(tag_id) <> MAX(tag_id)
Nếu cả post_id và tag_id đều có một ràng buộc duy nhất, thì điều này cũng sẽ hoạt động:
SELECT post_id
FROM tags
WHERE tag_id = 1 OR tag_id = 3
GROUP BY post_id
HAVING count(*) = 2;