Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser un ou plusieurs OU et ET dans une requête mysql

Il y a priorité avec des opérateurs logiques. En cas de doute, utilisez des parenthèses.

Dans votre cas :

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

Votre requête d'origine a été interprétée comme suit car le AND a une priorité plus élevée.

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

Mettre à jour

Comme commenté par Rocket , vous pouvez condenser votre OR déclarations à IN puisqu'ils opèrent sur le même terrain. Cela supprimerait le besoin de parenthèses.

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

Néanmoins, il est important de comprendre la différence entre les deux requêtes d'origine, car vous écrirez inévitablement des requêtes avec plusieurs conditions.