SQL estándar y portátil EXISTIRÁ... y es semánticamente lo mismo IN
SELECT *
FROM requests R
WHERE
EXISTS (SELECT *
FROM node n
WHERE r.id = n.nid AND r.langid = n.langid
)
El IN de varias columnas no es portátil a SQL Server o Sybase al menos.
Otras notas:
- UNA JOIN puede requerir un DISTINCT y no es lo mismo que IN o EXISTS.
- La opción final es INTERSECT, que es menos compatible y funciona como IN/EXISTS
- IIRC algunas versiones prehistóricas de MySQL (¿3.x?) no admitían la correlación para EXISTS