Ваша попытка показывает все события (темы не показаны) и просто удаляет комбинации событий и тем с идентификатором темы = 75.Все остальные темы (с идентификатором <> 75) все еще там, поэтому любое событие с темой 7 или 63 или что-либо еще будет отображаться.
Вам удалось не показывать события, в которых их единственная тема имеет идентификатор 75.
Но я думаю, что вы хотите, чтобы события ни в одной из их тем не имели идентификатор = 75:
SELECT events.*
FROM events
LEFT JOIN events_topics
ON events.id = events_topics.event_id
AND events_topics.topic_id = 75
WHERE events_topics.event_id IS NULL
Я думаю, что вышеизложенное эквивалентно версиям NOT EXISTS
и NOT IN
, которые у вас есть в качестве ответов.Их разница только в производительности.