sql中的and和or的优先级

是的,SQL 首选项文章非常详细。
确实,许多新手容易混淆 AND 和 OR 的顺序。
不过说实话,上次我在帮同事调试一个复杂的报表SQL的时候。
我错误地使用了 AND 和 OR。
于是所有的数据都乱了。
我当时真的很难过... 😅
一般来说,在写条件句时。
我通常添加一些括号作为安全点。
例如,这种写法 sql 从表名中选择 WHERE(第 1 列 = '值 1 ' AND 第 2 列 = '值 2 '); OR (column3 = 'value3 ' AND column4 = 'value4 ')
这样每个OR子句中AND的优先级自然就清晰了,查询逻辑也不会改变。
想一想,如果有额外的条件,就嵌套或者直接写。
最终结果可能不是你想要的......
老实说,我对优先级最大的担心是它们太复杂而难以编写,其他人无法阅读它们。
上次遇到的坑是在很长的SQL中直接嵌套6 层条件。
最后,我花了2 个小时调试这个,发现这是一个AND/OR排序问题。
所以现在当我强迫自己写SQL时,如果条件超过5 个。
将它们分组的括号将被使用。
虽然造成一点麻烦,但是完全值得。
👍
不过,写SQL的时候加点括号绝对没有坏处。
如果情况比较复杂,可以随时再次询问。
我最近一直在筛选 SQL 优化笔记。

sql中or和and的优先级

呃... SQL 中的 OR 和 AND... 我记得... 我在 2 02 2 年做那个项目... 挺烦人的... 就这样...
OR 和 AND... 他们怎么用... 是条件组合... 我记得那个城市... 某份报告... 做得不好... 结果很乱...
优先级是什么... AND 后来才想出来的... AND 后来想出来了... 先... 然后算OR... 没错... 就是这样想法...
比如说那个查询... SELECT FROM table WHERE (age>2 0 OR height>1 8 0) AND sex='M'... 当时就迷惑了...
这个括号... 嗯... 括号变了... 优先级... 先计算age>1 2 0OR括号... 首先...
假设... 2 02 2 年... 某个报表... 有1 00条记录... 2 0岁以上的... 也许6 0岁... 那些高于 1 8 0...也许 3 0...
或者条件...可能重叠...例如...身高也高...年龄也大...不能是 2 ...那个数字是 2 ...' AND 性别='M'...嗯...那 2 0 中只有男性...再次过滤...假设...男女比例为 1 :1 ...那 1 0...
最后...返回 1 0 项...同时匹配...年龄大于 2 0 或身高大于超过 1 8 0...全是男性...
并添加第一个结果...“并添加第一个结果...绝对错误...
所以...括号非常重要...检查顺序...避免错误...明白了...就是这样...
优先级...AND i 高...或低...括号各不相同...理解这一点...提交 SQL...然后...
记住那笔钱...如果你犯了一次错误...你可能会损失...数亿...数千...

sql中 and和or的优先级关系

AND 的优先级高于 OR。
示例:WHERE A AND B OR C 执行顺序为 (A AND B) OR C。
不要这样做:省略括号会令人困惑。
实用提醒:复杂条件需要加括号。