Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:Извличане на идентификатор, където точно 2 реда споделят един и същ идентификатор, но имат различни потребителски идентификатори

Ето един ефективен подход, който изобщо не използва подзаявки. Можете просто да филтрирате резултатите в Having клауза, използваща условно агрегиране:

ИЗБЕРЕТЕ conversion_id FROM assoc_user__conversation GROUP BY conversion_id HAVING -- всички редове до съществуват само за 1000001 или 1000002 само SUM(user_id IN (1000001, 1000002)) =COUNT(*)  

Резултат

<предварителен код>| ИД на разговор || --------------- || 10 |

Преглед на DB Fiddle

Друг възможен вариант на условно агрегиране е:

SELECT conversion_id FROM assoc_user__conversation GROUP BY conversion_id HAVING -- поне един ред за 1000001 да съществува SUM(user_id =1000001) И -- най-малко един ред за 1000002 да съществува SUM(user_id =1000002) И -- няма ред да съществува за други стойности на user_id NOT SUM(user_id NOT IN (1000001, 1000002))  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. направи всички цели числа с автоматично увеличение с еднакъв брой цифри с водещи нули

  2. Laravel 5.1 консумира сапун wsdl услуга, използвайки контролер и модел

  3. Как да преименувате качения файл, преди да го запишете в директория?

  4. MySQL Промяна на колекцията на всички таблици

  5. Как да гарантираме, че няма пропуски в числата на auto_increment?