L'SQL standard e portatile sarebbe EXISTS.. ed è semanticamente lo stesso IN
SELECT *
FROM requests R
WHERE
EXISTS (SELECT *
FROM node n
WHERE r.id = n.nid AND r.langid = n.langid
)
L'IN multicolonna non è portabile almeno in SQL Server o Sybase.
Altre note:
- UN JOIN può richiedere un DISTINCT e non è lo stesso di IN o EXISTS.
- L'ultima opzione è INTERSECT, che è meno comunemente supportata e funziona come IN/EXISTS
- IIRC alcune versioni preistoriche di MySQL (3.x?) non supportavano la correlazione per EXISTS