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

truy vấn bảng tin nhắn sql

Thao tác này sẽ chọn tất cả các cuộc hội thoại có người dùng 1 hoặc người dùng 2 hoặc cả hai chứ không có ai khác:

select conversationID
from conversations
group by conversationID
having count(*) = count(case when userID in (1,2) then 1 end)
       and count(*) = 2 -- number of elements in set

Nếu bạn cũng muốn tất cả các cuộc hội thoại có chính xác người dùng 1 và 2 và không có ai khác, bạn cũng phải thêm điều kiện và:

select conversationID
from conversations
group by conversationID
having count(*) = count(case when userID in (1,2) then 1 end)
       and count(*) = 2 -- number of elements in set

Nếu userID có thể bị trùng lặp, bạn cũng nên sử dụng riêng biệt:

select conversationID
from conversations
group by conversationID
having
  count(distinct userID) = count(distinct case when userID in (1,2) then userID end)
  and count(distinct userID) = 2 -- number of elements in set


  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ại sao loại này không hoạt động trong Solr?

  2. Menu lưu trữ blog PHP MYSQL theo năm và tháng

  3. Ví dụ về TIMEDIFF () - MySQL

  4. Làm cách nào để chuyển đổi cấu trúc phân cấp quan hệ thành bảng đóng trong MySQL?

  5. Tiện ích mở rộng mysql không được dùng nữa và sẽ bị xóa trong tương lai:hãy sử dụng mysqli hoặc PDO để thay thế