Jeśli nie ma żadnych unikalnych ograniczeń, spróbuj:
SELECT post_id
FROM tags
WHERE tag_id = 1 OR tag_id = 3
GROUP BY post_id
HAVING count(DISTINCT tag_id) = 2;
Lub użyj tego HAVING
klauzula, jeśli próbujesz wykryć tylko dwa tag_id
wartości:
HAVING MIN(tag_id) <> MAX(tag_id)
Jeśli zarówno post_id, jak i tag_id mają unikatowe ograniczenie, to również powinno działać:
SELECT post_id
FROM tags
WHERE tag_id = 1 OR tag_id = 3
GROUP BY post_id
HAVING count(*) = 2;