Select ...
From Occupations O
Where Not Exists (
Select 1
From Occupations O1
Where O1.Career_Id In(1,2,245)
And O1.User_Id = O.User_Id
Group By O1.User_Id
Having Count(*) = 3
)
Другое решение:
Select ...
From Occupations O
Where Exists (
Select 1
From Occupations O1
Where O1.Career_Id Not In(1,2,245)
And O1.User_Id = O.User_Id
)
Выгода с вышеупомянутым решением состоит в том, что он исключит тех, у которых есть только меньше, чем все три карьеры по умолчанию.То есть, это исключит пользователей, которые только имеют (1,2), (1,245), (2,245), (1), (2), (245).Если они должны иметь все три и только эти три, то вам нужно изменить это решение так:
Select ...
From Occupations O
Where Exists (
Select 1
From Occupations O1
Where O1.Career_Id Not In(1,2,245)
And O1.User_Id = O.User_Id
)
Or Exists (
Select 1
From Occupations O2
Where O2.User_Id = O.User_Id
Having Count(*) < 3
)