Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-ce que "Where IN" avec plusieurs colonnes est défini en SQL standard ?

Le SQL standard et portable serait EXISTS.. et est sémantiquement le même IN

SELECT *
FROM requests R
WHERE 
    EXISTS (SELECT *
           FROM node n
           WHERE r.id = n.nid AND r.langid = n.langid
           )

Le IN multi-colonnes n'est pas portable vers SQL Server ou Sybase au moins.

Autres remarques :

  • Un JOIN peut nécessiter un DISTINCT et n'est pas le même que IN ou EXISTS.
  • La dernière option est INTERSECT qui est moins couramment prise en charge et fonctionne comme IN/EXISTS
  • IIRC certaines versions préhistoriques de MySQL (3.x ?) ne prenaient pas en charge la corrélation pour EXISTS