Mysql
 sql >> Base de données >  >> RDS >> Mysql

requête de table de messages sql

Cela sélectionnera toutes les conversations qui ont les utilisateurs 1 ou 2, ou les deux, mais personne d'autre :

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

Si vous voulez également toutes les conversations qui ont exactement l'utilisateur 1 et 2, et personne d'autre, vous devez également ajouter une condition et :

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

Si l'ID utilisateur peut être dupliqué, il est également préférable d'utiliser distinct :

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