Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL:Truy xuất ID trong đó chính xác 2 hàng chia sẻ cùng một ID nhưng có userID khác nhau

Đây là một cách tiếp cận hiệu quả, không sử dụng truy vấn phụ nào cả. Bạn có thể chỉ cần lọc ra các kết quả trong Having mệnh đề, sử dụng kết hợp có điều kiện:

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

Kết quả

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

Xem trên DB Fiddle

Một biến thể khác của tập hợp có điều kiện có thể là:

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. Tìm người dùng trong Laravel theo tên người dùng

  2. Làm cách nào để đặt các kết quả truy vấn MYSQL THEO điều kiện ORDER BY?

  3. Sử dụng Biểu thức chính quy trong JPA CriteriaBuilder

  4. mã hóa base64 trong MySQL

  5. Ghi khung dữ liệu vào bảng MySql DB