Standardowy i przenośny SQL byłby ISTNIEJĄ... i jest semantycznie taki sam w IN
SELECT *
FROM requests R
WHERE
EXISTS (SELECT *
FROM node n
WHERE r.id = n.nid AND r.langid = n.langid
)
Wielokolumnowego IN nie można przenieść przynajmniej na SQL Server lub Sybase.
Inne uwagi:
- DOŁĄCZENIE może wymagać DISTINCT i nie jest tym samym, co IN lub EXISTS.
- Ostateczną opcją jest INTERSECT, która jest rzadziej obsługiwana i działa jak IN/EXISTS
- IIRC niektóre prehistoryczne wersje MySQL (3.x?) nie wspierały korelacji dla ISTNIEJĄCYCH