ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
where子句可以包含任意数目的and和or操作符,允许两者结果以进行复杂,高级的过滤 但是,组合and和or会带来了一个有趣的问题.为了说明这个问题,来看一个例子.假如需要列出价格为10美元及以上,而且由DLL01或BRS01制造的所有的产品. 下面的select语句使用组合and和or操作符建立了一个where子句 ![](https://box.kancloud.cn/1ad060eba0ae7789d529419d5a752a03_1220x1006.png) 分析 原因在于求值顺序.sql(像多数语言一样)在处理OR操作符前,优先处理and操作符.当sql看到上述where子句时.他理解为由供应商BRS01制造的价格为10美元以上的所有产品,以及由供应商DLL01制造的所有产品,而不管其价格如何 换句话说,由于and在求值过程中优先级更高,操作符被错误的组合了 此问题的解决办法是使用圆括号对操作符进行明确分组 ![](https://box.kancloud.cn/1b8758297505dc3e52fa9786e2cd47c7_1056x666.png)