Mysql
 sql >> Datenbank >  >> RDS >> Mysql

sql Nachrichtentabellenabfrage

Dadurch werden alle Konversationen ausgewählt, die Benutzer 1 oder Benutzer 2 oder beide haben, aber sonst niemanden:

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

Wenn Sie auch alle Konversationen haben möchten, die genau Benutzer 1 und 2 haben und sonst niemanden, müssen Sie auch eine Und-Bedingung hinzufügen:

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

Wenn die Benutzer-ID dupliziert werden kann, ist es auch besser, „distinct“ zu verwenden:

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