我有一个线程表,其ID是thread_members表的外键列作为thread_id。
线程到thread_members具有一对多关系。
如果给定的线程成员是5和55,我必须找到仅包含5和55的线程,但是可以有很多线程包含5,55和其他成员,但只有一个线程具有5和55。
如何在MySQL中实现这一目标。
答案 0 :(得分:3)
您可以使用HAVING
子句:
SELECT thread_id
FROM thread_members
GROUP BY thread_id
HAVING COUNT(*) = 2
AND COUNT(CASE WHEN user_id IN (5, 55) THEN 1 END) = 2
上面的返回线程恰好包含两个成员5和55。它假定您的数据不包含重复的thread_id, user_id
对。