У меня есть таблица красного смещения (user_group
), которая выглядит как
user_id | group_id
--------+---------
1 | 1
1 | 2
2 | 1
2 | 3
3 | 2
3 | 3
4 | 4
Каков наилучший способ написать запрос, который возвращает всех пользователей (user_id
), которые принадлежат к некоторому произвольному подмножеству групп(group_id
)?
Прямо сейчас мой взломанный запрос выглядит следующим образом, где я просто добавляю / удаляю WHERE
фильтры по мере необходимости:
SELECT DISTINCT user_id
FROM
user_group
WHERE
user_id IN (SELECT DISTINCT user_id FROM user_group WHERE group_id = 1)
AND user_id IN (SELECT DISTINCT user_id FROM user_group WHERE group_id = 5)
...
И, похоже, тамдолжно быть лучше?