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

Wie man ein oder mehrere ODER und UND in einer MySQL-Abfrage verwendet

Es gibt Vorrang mit logischen Operatoren. Verwenden Sie im Zweifelsfall Klammern.

In Ihrem Fall:

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

Ihre ursprüngliche Abfrage wurde wie folgt interpretiert, da AND hat Vorrang.

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

Aktualisieren

Wie von Rocket kommentiert , könnten Sie Ihr OR komprimieren Anweisungen an IN da sie auf dem gleichen Gebiet tätig sind. Dadurch würden Klammern überflüssig.

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

Dennoch ist es wichtig, den Unterschied zwischen den beiden ursprünglichen Abfragen zu verstehen, da Sie unweigerlich Abfragen mit mehreren Bedingungen schreiben werden.