在mysql查询where子句中,如何为OR提供比AND更高的优先级?

时间:2016-07-14 10:34:58

标签: mysql sql operators operator-precedence

我想查询以下性质:

"SELECT * FROM table1 where column1=1 OR column2=1 OR column3=1 AND column4=1 OR column5=1";

根据运算符优先级,首先执行AND运算,然后执行OR运算。但就我而言,我想要那个 column1 = 1 OR column2 = 1 OR column3 = 1 - >这和 column4 = 1 OR column5 = 1 - >首先执行此操作,然后根据AND操作对这些结果执行最终结果。

我是否可以在大多数编程语言中添加括号以获得更高的OR优先级,或者如何完成?

2 个答案:

答案 0 :(得分:1)

你需要使用括号并包装每个部分,如下所示:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]

答案 1 :(得分:1)

您可以添加括号。此外,您可以使用IN

表达逻辑
SELECT *
FROM table1 
WHERE 1 IN (column1, column2, column3) AND 1 IN (column4, column5);