標準および移植可能なSQLはEXISTS..であり、意味的に同じIN
SELECT *
FROM requests R
WHERE
EXISTS (SELECT *
FROM node n
WHERE r.id = n.nid AND r.langid = n.langid
)
複数列のINは、少なくともSQLServerまたはSybaseに移植できません。
その他の注意事項:
- JOINにはDISTINCTが必要な場合があり、INまたはEXISTSと同じではありません。
- 最後のオプションはINTERSECTです。これはあまり一般的にサポートされておらず、IN/EXISTSのように機能します
- IIRCの一部の先史時代のMySQLバージョン(3.x?)は、EXISTSの相関関係をサポートしていませんでした