은 내가확인
SELECT roomID
FROM user_to_room
WHERE userID IN (2,5)
GROUP BY roomID
HAVING COUNT(DISTINCT userID)=2
하는 데모를 작동하지 않음 (N 사용자 아이디에 따라 다름) roomID를 얻기 위해이 쿼리를 사용
roomID | userID
user_to_room 테이블이 : http://www.sqlfiddle.com/#!3/00b4a/1/0
(https://stackoverflow.com/a/16511691/1405318에서 가져옴)
그러나이 쿼리는 이 두 사용자가 다른 무작위 사용자와 함께있는 방. . 나는 작업 솔루션이
SELECT DISTINCT roomID
FROM user_to_room AS x2
WHERE x2.roomID NOT IN(SELECT DISTINCT roomID
FROM user_to_room
WHERE roomID IN(SELECT DISTINCT roomID
FROM user_to_room
WHERE userID IN (5, 2)
GROUP BY roomID
HAVING Count(DISTINCT userID) = 2)
AND userID NOT IN(2, 5))
AND roomID IN(SELECT DISTINCT roomID
FROM user_to_room
WHERE userID IN (5, 2)
GROUP BY roomID
HAVING Count(DISTINCT userID) = 2)
근무 데모 것
만 주어진 사용자 (2,3)에있는 방을 반환하는 쿼리가 필요합니다 http://www.sqlfiddle.com/#!3/00b4a/2/0
그러나 나는이 생각 너무 길다. 어떤 아이디어?
를 참조하십시오 SELECT roomID FROM user_to_room u1 JOIN user_to_room u2 USING (roomID) u1.userID = 2 AND u2.userID = 3' –
작동하지 않음 : 'Using'근처의 구문이 잘못되었습니다. : SELECT roomID FROM user_to_room u1 JOIN user_to_room u2 (roomID) WHERE 사용 u1.userID = 2 AND u2.userID = 5 – Chris
대신에 '켜기'사용 –