sql >> Database >  >> RDS >> Mysql

SQL-berichtentabelquery

Hiermee worden alle gesprekken geselecteerd die gebruiker 1 of gebruiker 2 of beide hebben, maar niemand anders:

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

Als je ook alle gesprekken wilt die precies gebruiker 1 en 2 hebben, en niemand anders, moet je ook een en-voorwaarde toevoegen:

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

Als gebruikers-ID kan worden gedupliceerd, is het ook beter om onderscheid te maken:

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. Converteer 'datetime2' naar 'datetime' in SQL Server (T-SQL-voorbeelden)

  2. Waarom heeft mijn InnoDB-tabel een rare waarde voor het aantal records?

  3. haal getallen uit een *varchar*-cel en bereken ze in pure mysql

  4. Een samengestelde primaire sleutel maken in SQL Server (T-SQL-voorbeeld)