Есть таблица хранящая отношения многие ко многим.
UserId RoomId DateAdd id
2e8ba91e-c091-437a-8823-43c403d52d87 2066 21.08.2017 20:11:15.257 5
2e8ba91e-c091-437a-8823-43c403d52d87 2067 21.08.2017 20:11:40.477 7
5c8de7b8-abb0-417c-971e-b2217d6a3652 2066 21.08.2017 20:11:23.197 6
cacb2d37-0d73-4848-8758-b5af8841b13d 2067 21.08.2017 20:11:43.260 8
Как наилучшим образом получить (или не получить) id комнаты, которому соответствуют все из переданных Id юзеров?
У меня есть решение, но мне кажется что оно не оптимально.
SELECT
c.RoomId
FROM (SELECT
UserRooms.RoomId
,COUNT(*) AS RoomCount
FROM dbo.UserRooms
WHERE UserRooms.UserId IN ('2e8ba91e-c091-437a-8823-43c403d52d87', '5c8de7b8-abb0-417c-971e-b2217d6a3652')
GROUP BY UserRooms.RoomId) c
WHERE c.RoomCount = 2