Hiermee worden alle gesprekken geselecteerd die gebruiker 1 of gebruiker 2 of beide hebben, maar niemand anders:
select conversationID
from conversations
group by conversationID
having count(*) = count(case when userID in (1,2) then 1 end)
Als je ook alle gesprekken wilt die precies gebruiker 1 en 2 hebben, en niemand anders, moet je ook een en-voorwaarde toevoegen:
select conversationID
from conversations
group by conversationID
having count(*) = count(case when userID in (1,2) then 1 end)
and count(*) = 2 -- number of elements in set
Als gebruikers-ID kan worden gedupliceerd, is het ook beter om onderscheid te maken:
select conversationID
from conversations
group by conversationID
having
count(distinct userID) = count(distinct case when userID in (1,2) then userID end)
and count(distinct userID) = 2 -- number of elements in set