Verifique si 2 usuarios están en la misma sala con mySQL

Tengo una tabla user_to_room

roomID | userID 

Ahora quiero verificar, si 2 usuarios están en la misma habitación

 SELECT roomID FROM room_to_user WHERE userID = 1 AND 2 

¿Cómo lograr esto con un JOIN?

Haz una auto unión:

 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; 

Ver demostración

También puede hacer la siguiente consulta:

 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 

revisa la demostración aquí

Otra solución que puedes usar es esta:

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

Esto contará la cantidad de usuarios DISTINCT para cada habitación que satisfaga la condición userID IN (2,3) de usuario userID IN (2,3) . Si el conteo es 2, significa que tanto el ID de usuario 2 como el ID de usuario 3 están en la misma habitación.