Найти идентификатор одного родителя, содержащий ровно двух данных детей - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть таблица потоков, идентификатором которой является столбец внешнего ключа для таблицы thread_members как thread_id.

Тема с thread_members имеет отношение один ко многим.

Если даны элементы потока 5 и 55, мне нужно найти поток, который содержит только 5 и 55, но может быть много потоков, содержащих 5,55 и другие элементы, но только один из них имеет 5 и 55.

Как мне добиться этого в MySQL.

1 Ответ

0 голосов
/ 17 декабря 2018

Вы можете использовать предложение 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.

...