Standard- und portables SQL wären EXISTS.. und sind semantisch gleich IN
SELECT *
FROM requests R
WHERE
EXISTS (SELECT *
FROM node n
WHERE r.id = n.nid AND r.langid = n.langid
)
Das mehrspaltige IN ist zumindest nicht auf SQL Server oder Sybase übertragbar.
Sonstige Hinweise:
- Ein JOIN erfordert möglicherweise ein DISTINCT und ist nicht dasselbe wie IN oder EXISTS.
- Die letzte Option ist INTERSECT, die weniger häufig unterstützt wird und wie IN/EXISTS funktioniert
- IIRC Einige prähistorische MySQL-Versionen (3.x?) unterstützten die Korrelation für EXISTS nicht