Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL:Mengambil ID di mana tepat 2 baris berbagi ID yang sama tetapi memiliki ID pengguna yang berbeda

Berikut ini adalah pendekatan performan, tanpa menggunakan subquery sama sekali. Anda cukup memfilter hasil di Having klausa, menggunakan agregasi bersyarat:

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

Hasil

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

Lihat di DB Fiddle

Variasi lain dari agregasi bersyarat yang mungkin adalah:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah DataColumn MaxLength dengan MySql.Data.MySqlClient.MySqlCommand.ExecuteReader

  2. Validasi dan penyisipan PHP-Form menggunakan MySql

  3. MySQL Cluster (NDB) vs Replikasi MySQL (InnoDB) untuk aplikasi Rails 3:pro/kontra?

  4. mencegah beberapa kueri simultan dengan pencarian langsung php/mysql

  5. Mengindeks kolom yang memiliki nilai duplikat