Mysql
 sql >> Database >  >> RDS >> Mysql

È "Where IN" con più colonne definite in Standard SQL?

L'SQL standard e portatile sarebbe EXISTS.. ed è semanticamente lo stesso IN

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

L'IN multicolonna non è portabile almeno in SQL Server o Sybase.

Altre note:

  • UN JOIN può richiedere un DISTINCT e non è lo stesso di IN o EXISTS.
  • L'ultima opzione è INTERSECT, che è meno comunemente supportata e funziona come IN/EXISTS
  • IIRC alcune versioni preistoriche di MySQL (3.x?) non supportavano la correlazione per EXISTS