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

MySQL:Henter ID, hvor præcis 2 rækker deler det samme ID, men har forskellige bruger-ID'er

Her er en effektiv tilgang, der ikke bruger nogen underforespørgsler overhovedet. Du kan blot filtrere resultater fra i Having klausul ved hjælp af betinget aggregering:

SELECT 
  conversation_id 
FROM assoc_user__conversation 
GROUP BY conversation_id 
HAVING 
  -- all the rows to exists only for 1000001 or 1000002 only
  SUM(user_id IN (1000001, 1000002)) = COUNT(*) 
 

Resultat

| conversation_id | | --------------- | | 10 |

Se på DB Fiddle

En anden mulig variation af betinget aggregering er:

SELECT 
  conversation_id 
FROM assoc_user__conversation 
GROUP BY conversation_id 
HAVING 
  -- atleast one row for 1000001 to exists
  SUM(user_id = 1000001) AND  
  -- atleast one row for 1000002 to exists
  SUM(user_id = 1000002) AND  
  -- no row to exist for other user_id values
  NOT SUM(user_id NOT IN (1000001, 1000002)) 
 


  1. Tilslutning til en Oracle-database ved hjælp af SQLAlchemy

  2. Indsendelse af kommaseparerede værdier til WHERE-sætning i oracles lagrede procedure

  3. Bedste måde at gemme brugerindstillinger i MySQL?

  4. Sådan gendannes tilliden til en fremmednøglebegrænsning i SQL Server (T-SQL-eksempler)