sql >> Databáze >  >> RDS >> Mysql

Je ve standardním SQL definováno „Where IN“ s více sloupci?

Standardní a přenosné SQL by EXISTUJE... a je sémanticky stejné IN

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

Vícesloupcové IN není přenosné alespoň na SQL Server nebo Sybase.

Další poznámky:

  • JOIN může vyžadovat DISTINCT a není totéž jako IN nebo EXISTS.
  • Poslední možností je INTERSECT, která je méně běžně podporována a funguje jako IN/EXISTS
  • IIRC některé prehistorické verze MySQL (3.x?) nepodporovaly korelaci pro EXISTS


  1. Jak testovat transakce MySQL?

  2. Vyhodnocování, když je vyhodnocen výraz v dotazu

  3. Jak změnit cizí klíč tabulky MySQL pomocí příkazového řádku

  4. Jak TAN() funguje v MariaDB