在MySQL中,不同类型的运算符有不同的优先级。当一个表达式中包含多个运算符时,MySQL会根据运算符的优先级决定运算的先后顺序。下面是MySQL运算符的优先级从高到低的顺序:
- 括号:用括号可以改变运算符的优先级,括号内的表达式会先被计算。
- 一元运算符:包括正号(+)和负号(-)。
- 乘法运算符:包括乘号(*)、除号(/)和取余数(%)。
- 加法运算符:包括加号(+)和减号(-)。
- 比较运算符:包括等于号(=)、不等于号(<>或!=)、大于号(>)、小于号(<)、大于等于号(>=)和小于等于号(<=)。
- 逻辑运算符:包括逻辑非(NOT)、逻辑与(AND)和逻辑或(OR)。
- 位运算符:包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。
下面是一些MySQL运算符的优先级示例
SELECT 2 + 3 * 4; -- 返回14
-- 先计算3 * 4,再加上2
SELECT (2 + 3) * 4; -- 返回20
-- 先计算括号内的2 + 3,再乘上4
SELECT NOT (1 = 1) OR (2 > 3); -- 返回0
-- 先计算括号内的1 = 1,得到TRUE,然后取反得到FALSE
-- 再计算FALSE OR (2 > 3),得到FALSE
SELECT 5 & 3 << 2; -- 返回4
-- 先计算3 << 2,得到12
-- 再计算5 & 12,得到4
在表达式中使用括号是一个好习惯,可以更清晰地表达运算的优先级和先后顺序,避免出现歧义。