Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O “Where IN” com várias colunas está definido no SQL padrão?


SQL padrão e portátil seria EXISTS.. e é semanticamente o mesmo IN
SELECT *
FROM requests R
WHERE 
    EXISTS (SELECT *
           FROM node n
           WHERE r.id = n.nid AND r.langid = n.langid
           )

O IN de várias colunas não é portátil para SQL Server ou Sybase, pelo menos.

Outras notas:
  • Um JOIN pode exigir um DISTINCT e não é o mesmo que IN ou EXISTS.
  • A última opção é INTERSECT, que é menos suportada e funciona como IN/EXISTS
  • IIRC algumas versões pré-históricas do MySQL (3.x?) não suportavam a correlação para EXISTS