sql >> Databasteknik >  >> RDS >> Mysql

sql meddelandetabell fråga

Detta kommer att välja alla konversationer som har användare 1 eller användare 2, eller båda, men ingen annan:

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

Om du också vill ha alla konversationer som har exakt användare 1 och 2, och ingen annan, måste du också lägga till ett och villkor:

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

Om användar-ID kan dupliceras är det också bättre att använda distinkt:

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


  1. Python:Hur installerar jag mysqldb på Windows 7 x64?

  2. MySQL – Databas Character Set Encoding and Collation Explained

  3. Hantera användarvarningar

  4. PostgreSQL:s date_trunc i mySQL