不是。是可优先级比较高的and先执行,同级别的就从左往右执行。。 我用括号给你标出执行顺序,你看下就明白了。
select * from table where ((((tj1 and tj2) and tj3) or tj4) or tj5)
看明白了吗?最里面的括号先执行,然后是外面一层的括号。
如果你把and和or的位置变换一下,那么执行顺序也会发生改变。比如:
select * from table where ((tj1 or (tj2 and tj3) )or (tj4 and tj5))
不知道你看明白没有。。 不明白的可以问我。
你的理解是对的。
A OR B 只要有一个是false就是false,所以当or和and相遇时,如果没括号,那就相当于or两侧的条件和每一个and条件进行组合。
SQL Server
级别 运算符
1 ~(位非)
2 *(乘)、/(除)、%(取模)
3 +(正)、-(负)、+(加)、(+ 连接)、-(减)、&(位与)
4 =, >、<、>=、<=、<>、!=、!>、!<(比较运算符)
5 ^(位异或)、|(位或)
6 NOT
7 AND
8 ALL、ANY、BETWEEN、IN、LIKE、OR、SOME
9 =(赋值)
注意到了么?
AND 排在第7位。
OR 排在第8位。
也就是如果不加括号, 那么先 AND 完了, 再 OR