Фильтр таблицы по другой таблице
Добрый день. Есть две таблицы. Titles и Genres
Titles:
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+----+
Genres:
+----+------------+------------+
| id | title_id | genre_id |
+----+------------+------------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 2 | 3 |
| 5 | 3 | 4 |
| 6 | 3 | 2 |
| 7 | 4 | 5 |
| 7 | 4 | 6 |
+----+------------+------------+
Согласно им title с номером 2 соответствуют два genre (1 и 3)
Мне необходимо вывести список titles у которых, например, genre одновременно равен 1 и 3 ИЛИ одновременно не равен 2 и 4
Пробую такой запрос: работает для условия IN. Можно ли написать подобный для NOT IN, чтобы запрос особо не менялся и мог выполниться при условии, что часть IN тоже присутствует. Возможно ли построить такой запрос?
SELECT t.id FROM titles t
LEFT JOIN genres g ON t.id = g.title_id
WHERE g.genre_id IN(1, 2)
GROUP BY t.id
HAVING count(DISTINCT g.genre_id) = 2
ORDER BY t.id