Есть подзапрос, который возвращает значения id2, имеющие a или c.Выполните NOT IN
эти значения id2.
SELECT * FROM table
WHERE id2 not in (select id2 from table where string IN ('a','c'))
Если id2 может содержать нулевые значения, вместо этого введите NOT EXISTS
:
SELECT * FROM table t1
WHERE NOT EXISTS (select 1 from table t2
where t2.string IN ('a','c')
and t1.id2 = t2.id2))