多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 5.8、表达式的优先级 l 查询薪水大于1800,并且部门代码为20或30的员工(错误的写法) ``` select * from emp where sal > 1800 and deptno = 20 or deptno = 30; ``` ![](https://img.kancloud.cn/67/c4/67c481c63f90ce20ada2f988f57456f6_643x248.png) 以上输出不是预期结果,薪水小于1800的数据也被查询上来了,原因是表达式的优先级导致的,首先过滤sal > 1800 and deptno = 20,然后再将deptno = 30员工合并过来,所以是不对的 l 查询薪水大于1800,并且部门代码为20或30的(正确的写法) ``` select * from emp where sal > 1800 and (deptno = 20 or deptno = 30); ``` 由此可以得出结论:and 的优先级比or高,也就是说无论and出现在哪里都优先计算,如果and 和or同时出现一般把and写在前面 关于运算符的问题:不用记,没有把握尽量采用括号