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

Come utilizzare uno o più OR e AND nella query mysql

C'è precedenza con operatori logici. In caso di dubbio, usa le parentesi.

Nel tuo caso:

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

La tua query originale è stata interpretata come segue perché AND ha una precedenza maggiore.

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

Aggiorna

Come commentato da Rocket , potresti condensare il tuo OR dichiarazioni a IN poiché operano sullo stesso campo. Ciò eliminerebbe la necessità di parentesi.

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

Tuttavia, è importante comprendere la differenza tra le due query originali poiché inevitabilmente scriverai query con più condizioni.