sql >> Base de Datos >  >> RDS >> Mysql

consulta de tabla de mensajes sql

Esto seleccionará todas las conversaciones que tengan usuarios 1 o 2, o ambos, pero nadie más:

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

Si también desea todas las conversaciones que tienen exactamente el usuario 1 y 2, y nadie más, también debe agregar una condición y:

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 el ID de usuario se puede duplicar, también es mejor usar 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