sql >> Base de Datos >  >> RDS >> Mysql

¿Está "Dónde EN" con varias columnas definidas en SQL estándar?

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