Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

consulta de tabela de mensagens sql


Isso selecionará todas as conversas que têm usuários 1 ou 2, ou ambos, mas ninguém mais:
select conversationID
from conversations
group by conversationID
having count(*) = count(case when userID in (1,2) then 1 end)

Se você também quiser todas as conversas que tenham exatamente o usuário 1 e 2, e mais ninguém, você também deve adicionar uma condição 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 o userID puder ser duplicado, também é melhor usar 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