Mysql
 sql >> Database >  >> RDS >> Mysql

query sulla tabella dei messaggi sql

Questo selezionerà tutte le conversazioni che hanno l'utente 1 o l'utente 2, o entrambi, ma nessun altro:

select conversationID
from conversations
group by conversationID
having count(*) = count(case when userID in (1,2) then 1 end)

Se vuoi anche tutte le conversazioni che hanno esattamente l'utente 1 e 2 e nessun altro, devi anche aggiungere una condizione e:

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

Se l'ID utente può essere duplicato, è anche meglio utilizzare distinto:

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