Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist „Where IN“ mit mehreren Spalten in Standard-SQL definiert?

Standard- und portables SQL wären EXISTS.. und sind semantisch gleich IN

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

Das mehrspaltige IN ist zumindest nicht auf SQL Server oder Sybase übertragbar.

Sonstige Hinweise:

  • Ein JOIN erfordert möglicherweise ein DISTINCT und ist nicht dasselbe wie IN oder EXISTS.
  • Die letzte Option ist INTERSECT, die weniger häufig unterstützt wird und wie IN/EXISTS funktioniert
  • IIRC Einige prähistorische MySQL-Versionen (3.x?) unterstützten die Korrelation für EXISTS nicht