sql >> Database teknologi >  >> RDS >> Mysql

sql-meddelelsestabelforespørgsel

Dette vil vælge alle samtaler, der har bruger 1 eller bruger 2, eller begge, men ingen andre:

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

Hvis du også vil have alle samtaler, der har præcis bruger 1 og 2, og ingen andre, skal du også tilføje en og betingelse:

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

Hvis bruger-ID kan duplikeres, er det også bedre at bruge 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. Heroku Postgres:Denne forbindelse er blevet lukket

  2. Mysql:tilføjelse af fremmed nøgle giver ingen advarsel/fejl på MyISAM-tabeller

  3. PostgreSQL 8.3 privilegier ikke opdateret - forkert brug?

  4. Hvordan får man optælling af stat og by i landet ved hjælp af SQL-forespørgsel fra databasen?