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

Jak použít jeden nebo více OR a AND v dotazu mysql

Existuje přednost s logickými operátory. V případě pochybností použijte závorku.

Ve vašem případě:

SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200

Váš původní dotaz byl interpretován následovně, protože AND má vyšší prioritu.

SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)

Aktualizovat

Jak komentoval Rocket , můžete zkondenzovat OR prohlášení na IN protože působí ve stejném oboru. Tím by se odstranila potřeba závorek.

SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200

Pochopení rozdílu mezi dvěma původními dotazy je nicméně důležité, protože nevyhnutelně budete psát dotazy s více podmínkami.



  1. Změňte hodnotu AUTO_INCREMENT výběrem výsledku

  2. Problém s porovnáním řetězců Oracle PL/SQL

  3. Číselný sloupec MySQL s omezením rozsahu:jak?

  4. json_encode pro dotaz mysql vrací některé prázdné sloupce některých řádků, ale sloupce nejsou prázdné