查找恰好包含两个给定 children 的单个 parent id

Find single parent id containing exactly two given children

我有一个线程 table,其 ID 是 thread_members table 的外键列,如 thread_id。

Thread 到 thread_members 具有一对多关系。

如果给定的线程成员是 5 和 55,我必须找到只包含 5 和 55 的线程,但是可以有很多线程包含 5,55 和其他成员,但只有一个包含 5 和 55。

我如何在 MySQL 中实现此目的。

您可以使用 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

以上 returns 个线程恰好包含两个成员,5 和 55。假设您的数据不包含重复的 thread_id, user_id 对。