sql >> Database >  >> RDS >> Mysql

MySQL:ID ophalen waar precies 2 rijen dezelfde ID delen maar verschillende gebruikers-ID's hebben

Hier is een performante aanpak, waarbij helemaal geen subquery's worden gebruikt. U kunt eenvoudig de resultaten uitfilteren in Having clausule, met behulp van voorwaardelijke aggregatie:

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(*) 

Resultaat

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

Bekijken op DB Fiddle

Een andere mogelijke variant van voorwaardelijke aggregatie is:

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. Geneste query in node js met mysql

  2. Is MySql-ondersteuning sp_getapplock

  3. De functie lower() voor internationale tekens in postgresql

  4. Wat is de eenvoudigste manier om een ​​script uit te voeren wanneer een e-mail wordt ontvangen?