2013-05-12 53 views

回答

3

做一個自我聯接:

SELECT DISTINCT u1.roomID AS roomID 
FROM user_to_room u1, user_to_room u2 
WHERE u1.userID = 1 AND u2.userID = 2 
AND u1.roomID = u2.roomID; 

demo

+0

我必須在哪裏放入我的2個用戶ID? – Chris 2013-05-12 20:03:06

+0

我想你讓我錯了。我需要獲得兩個給定用戶的roomID。現在它只是返回所有roomID與多個用戶? – Chris 2013-05-12 20:06:42

+0

@Chris你的問題沒有明確說明你想爲兩個特定用戶使用roomid。你問「2個用戶是否在同一個房間」。 – 2013-05-12 20:09:30

2

您還可以在下面的查詢:

CREATE TABLE user_to_room (roomID INT, userID INT); 

INSERT INTO user_to_room VALUES (101, 2); 
INSERT INTO user_to_room VALUES (102, 3); 
INSERT INTO user_to_room VALUES (102, 4); 


    select distinct roomid 
from user_to_room a where exists 
(select top 1 1 from user_to_room where roomid = a.roomid and userid =3) 
and userid = 4 

檢查這裏

0

另一種解決方案可以使用demo是這樣的:

SELECT roomID 
FROM  user_to_room 
WHERE userID IN (2,3) 
GROUP BY roomID 
HAVING COUNT(DISTINCT userID)=2 

這將計數不同用戶的數量每個房間滿足條件userID IN (2,3)。如果計數爲2,則表示userID 2和userID 3位於同一個房間。

+0

我剛剛嘗試過,但它返回多個roomID。即使房間內還有其他用戶,它也會返回所有都是用戶的roomID。 – Chris 2013-05-29 19:41:36

相關問題