Если вы нормализовали вашу таблицу2 так, чтобы список тем находился в отдельной вложенной таблице, это был бы тривиальный запрос. В настоящее время это сложно, так как по умолчанию mysql не будет видеть эти отдельные темы в table2.topics как отдельные темы. Это просто длинная строка с запятыми.
К счастью, MySQL имеет функцию find_in_set()
, которая может очень помочь, но эта функция недоступна в других местах. Не имея доступа к вашему набору данных, я просто догадываюсь здесь, но это должно сработать:
SELECT table1.topics, count(table1.topic_id) AS cnt
FROM table1
LEFT JOIN table2.topics ON FIND_IN_SET(table1.topics, table2.topics) = 0
GROUP BY table1.topics
HAVING cnt = 0
По сути, присоединяйтесь к таблицам, где тема table1 НЕ находится в теме table2, и посчитайте, сколько раз тема table1 показывается вот так. Если он появляется ноль раз, то он присутствует как минимум в одной записи в таблице 2.